From 276121050a9c1a84bf634e7f9cc7a0416fc8d53f Mon Sep 17 00:00:00 2001 From: wittinobi Date: Thu, 27 Sep 2012 10:20:03 +0200 Subject: [PATCH] update liga_nat, remove old unused plugin sources --- archive-sources/blockads/blockad.c | 232 - archive-sources/blockads/blockads.c | 573 --- archive-sources/blockads/blockads.cfg | 7 - archive-sources/blockads/blockads.conf | 31 - archive-sources/blockads/blockads.h | 162 - archive-sources/blockads/gfx.c | 121 - archive-sources/blockads/gfx.h | 28 - archive-sources/blockads/globals.c | 417 -- archive-sources/blockads/globals.h | 58 - archive-sources/blockads/http.c | 178 - archive-sources/blockads/http.h | 27 - archive-sources/blockads/io.c | 128 - archive-sources/blockads/io.h | 33 - archive-sources/blockads/lcd.c | 323 -- archive-sources/blockads/lcd.h | 67 - archive-sources/blockads/lcd_font.h | 2598 ---------- archive-sources/blockads/readme.txt | 68 - archive-sources/blockads/start.c | 53 - archive-sources/blockads/text.c | 230 - archive-sources/blockads/text.h | 33 - archive-sources/blockads/wzops | 106 - archive-sources/getrc/getrc.c | 38 - archive-sources/getrc/io.c | 152 - archive-sources/getrc/io.h | 69 - archive-sources/input/gfx.c | 128 - archive-sources/input/gfx.h | 8 - archive-sources/input/input.c | 504 -- archive-sources/input/input.h | 125 - archive-sources/input/inputd.c | 623 --- archive-sources/input/inputd.h | 11 - archive-sources/input/io.c | 77 - archive-sources/input/io.h | 11 - archive-sources/input/text.c | 247 - archive-sources/input/text.h | 16 - archive-sources/liga_nat/liga_nat | 262 +- archive-sources/logomask/gfx.c | 60 - archive-sources/logomask/gfx.h | 15 - archive-sources/logomask/io.c | 77 - archive-sources/logomask/io.h | 11 - archive-sources/logomask/lmask | 8 - archive-sources/logomask/logomask.c | 345 -- archive-sources/logomask/logomask.cfg | 7 - archive-sources/logomask/logomask.h | 99 - archive-sources/logomask/logoset.c | 794 --- archive-sources/logomask/logoset.cfg | 7 - archive-sources/logomask/logoset.h | 126 - archive-sources/logomask/starter_logomask.c | 54 - archive-sources/logomask/text.c | 195 - archive-sources/logomask/text.h | 12 - archive-sources/msgbox/gfx.c | 97 - archive-sources/msgbox/gfx.h | 7 - archive-sources/msgbox/io.c | 77 - archive-sources/msgbox/io.h | 11 - archive-sources/msgbox/msgbox.c | 956 ---- archive-sources/msgbox/msgbox.h | 136 - archive-sources/msgbox/msgbox.txt | 8 - archive-sources/msgbox/text.c | 272 - archive-sources/msgbox/text.h | 12 - archive-sources/msgbox/txtform.c | 108 - archive-sources/msgbox/txtform.h | 7 - archive-sources/shellexec/gfx.c | 187 - archive-sources/shellexec/gfx.h | 9 - archive-sources/shellexec/io.c | 164 - archive-sources/shellexec/io.h | 12 - archive-sources/shellexec/shellexec.c | 1830 ------- archive-sources/shellexec/shellexec.cfg | 7 - archive-sources/shellexec/shellexec.conf | 10 - archive-sources/shellexec/shellexec.h | 163 - archive-sources/shellexec/starter.c | 53 - archive-sources/shellexec/text.c | 403 -- archive-sources/shellexec/text.h | 18 - archive-sources/tuxcal/daemon/tuxcald.c | 2557 ---------- archive-sources/tuxcal/daemon/tuxcald.h | 481 -- archive-sources/tuxcal/tuxcal.c | 3068 ------------ archive-sources/tuxcal/tuxcal.cfg | 7 - archive-sources/tuxcal/tuxcal.conf | 26 - archive-sources/tuxcal/tuxcal.h | 801 --- archive-sources/tuxcom/tuxcom.c | 4913 ------------------- archive-sources/tuxcom/tuxcom.cfg | 6 - archive-sources/tuxcom/tuxcom.h | 643 --- 80 files changed, 126 insertions(+), 26477 deletions(-) delete mode 100644 archive-sources/blockads/blockad.c delete mode 100644 archive-sources/blockads/blockads.c delete mode 100644 archive-sources/blockads/blockads.cfg delete mode 100644 archive-sources/blockads/blockads.conf delete mode 100644 archive-sources/blockads/blockads.h delete mode 100644 archive-sources/blockads/gfx.c delete mode 100644 archive-sources/blockads/gfx.h delete mode 100644 archive-sources/blockads/globals.c delete mode 100644 archive-sources/blockads/globals.h delete mode 100644 archive-sources/blockads/http.c delete mode 100644 archive-sources/blockads/http.h delete mode 100644 archive-sources/blockads/io.c delete mode 100644 archive-sources/blockads/io.h delete mode 100644 archive-sources/blockads/lcd.c delete mode 100644 archive-sources/blockads/lcd.h delete mode 100644 archive-sources/blockads/lcd_font.h delete mode 100644 archive-sources/blockads/readme.txt delete mode 100644 archive-sources/blockads/start.c delete mode 100644 archive-sources/blockads/text.c delete mode 100644 archive-sources/blockads/text.h delete mode 100755 archive-sources/blockads/wzops delete mode 100644 archive-sources/getrc/getrc.c delete mode 100644 archive-sources/getrc/io.c delete mode 100644 archive-sources/getrc/io.h delete mode 100644 archive-sources/input/gfx.c delete mode 100644 archive-sources/input/gfx.h delete mode 100644 archive-sources/input/input.c delete mode 100644 archive-sources/input/input.h delete mode 100644 archive-sources/input/inputd.c delete mode 100644 archive-sources/input/inputd.h delete mode 100644 archive-sources/input/io.c delete mode 100644 archive-sources/input/io.h delete mode 100644 archive-sources/input/text.c delete mode 100644 archive-sources/input/text.h delete mode 100644 archive-sources/logomask/gfx.c delete mode 100644 archive-sources/logomask/gfx.h delete mode 100644 archive-sources/logomask/io.c delete mode 100644 archive-sources/logomask/io.h delete mode 100755 archive-sources/logomask/lmask delete mode 100644 archive-sources/logomask/logomask.c delete mode 100644 archive-sources/logomask/logomask.cfg delete mode 100644 archive-sources/logomask/logomask.h delete mode 100644 archive-sources/logomask/logoset.c delete mode 100644 archive-sources/logomask/logoset.cfg delete mode 100644 archive-sources/logomask/logoset.h delete mode 100644 archive-sources/logomask/starter_logomask.c delete mode 100644 archive-sources/logomask/text.c delete mode 100644 archive-sources/logomask/text.h delete mode 100755 archive-sources/msgbox/gfx.c delete mode 100755 archive-sources/msgbox/gfx.h delete mode 100755 archive-sources/msgbox/io.c delete mode 100755 archive-sources/msgbox/io.h delete mode 100644 archive-sources/msgbox/msgbox.c delete mode 100755 archive-sources/msgbox/msgbox.h delete mode 100755 archive-sources/msgbox/msgbox.txt delete mode 100644 archive-sources/msgbox/text.c delete mode 100755 archive-sources/msgbox/text.h delete mode 100755 archive-sources/msgbox/txtform.c delete mode 100755 archive-sources/msgbox/txtform.h delete mode 100755 archive-sources/shellexec/gfx.c delete mode 100755 archive-sources/shellexec/gfx.h delete mode 100755 archive-sources/shellexec/io.c delete mode 100755 archive-sources/shellexec/io.h delete mode 100644 archive-sources/shellexec/shellexec.c delete mode 100755 archive-sources/shellexec/shellexec.cfg delete mode 100755 archive-sources/shellexec/shellexec.conf delete mode 100755 archive-sources/shellexec/shellexec.h delete mode 100644 archive-sources/shellexec/starter.c delete mode 100644 archive-sources/shellexec/text.c delete mode 100755 archive-sources/shellexec/text.h delete mode 100755 archive-sources/tuxcal/daemon/tuxcald.c delete mode 100755 archive-sources/tuxcal/daemon/tuxcald.h delete mode 100755 archive-sources/tuxcal/tuxcal.c delete mode 100755 archive-sources/tuxcal/tuxcal.cfg delete mode 100755 archive-sources/tuxcal/tuxcal.conf delete mode 100755 archive-sources/tuxcal/tuxcal.h delete mode 100644 archive-sources/tuxcom/tuxcom.c delete mode 100644 archive-sources/tuxcom/tuxcom.cfg delete mode 100644 archive-sources/tuxcom/tuxcom.h diff --git a/archive-sources/blockads/blockad.c b/archive-sources/blockads/blockad.c deleted file mode 100644 index 1776c6d..0000000 --- a/archive-sources/blockads/blockad.c +++ /dev/null @@ -1,232 +0,0 @@ -/* - * $Id: blockad.c,v 1.0 2010/04/25 18:00:00 Exp $ - * - * blockads - d-box2 linux project - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - * -*/ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "globals.h" -#ifdef HAVE_DBOX_HARDWARE -#include "lcd.h" -#endif -#include "http.h" - -/****************************************************************************** - * Blockad Main - ******************************************************************************/ - -int main (void) -{ -int loop=0, werbung=0, tnet=-1,blit=0,cnum=-1,tv,wflag=1,runtime=0, mut=0, vol=0, tmin=15; -char tstr[40],zapchan[40],msgchan[40]; -FILE *fh1; -time_t t1,t2,t3,t4; - - printf("Blockad Version %s\n",P_VERSION); - - if (!ReadConf()) - { - printf("Blockad \n"); - } - else - { - if((fh1=fopen(FLG_FILE,"r"))!=NULL) - { - if(fgets(zapchan, sizeof(zapchan), fh1)) - { - Trim_String(zapchan); - if(fgets(tstr, sizeof(tstr), fh1)) - { - sscanf(tstr,"%d",&cnum); - if(fgets(tstr, sizeof(tstr), fh1)) - { - sscanf(tstr,"%d",&rezap); - if(fgets(msgchan, sizeof(msgchan), fh1)) - { - Trim_String(msgchan); - } - else - { - sprintf(msgchan,"Unbekannt"); - } - if(fgets(tstr, sizeof(tstr), fh1)) - { - if(sscanf(tstr,"%d",&vol)==1) - { - if(volume) - { - if(fgets(tstr, sizeof(tstr), fh1)) - { - if(sscanf(tstr,"%d",&mut)!=1) - { - mut=0; - } - } - } - } - } - if(fgets(tstr, sizeof(tstr), fh1)) - { - if(sscanf(tstr,"%d",&tmin)!=1) - { - tmin=15; - } - } - } - } - else - { - rezap=420; - } - loop=1; - if(cnum<0) - { - inet=-1; - } - } - fclose(fh1); - } - time(&t1); - t4=t3=t1; -#ifdef HAVE_DBOX_HARDWARE - LCD_Init(); -#endif - if(inet>=0) - { - if(Open_Socket()==-1) - { - inet=-1; - } - } - while(loop) - { - time(&t2); - if(inet>=0) - { - tnet=-1; - if(inet>=0) - { - tv=Check_Socket(cnum,&werbung); - if(!werbung) - { - if((t2-t4)>tmin) - { - Do_Rezap(zapchan,vol,mut); - loop=0; - } - } - else - { - t4=t2; - } - if(tv>=0) - { - tnet=inet; - } - } - inet=tnet; - } - if(loop) - { - if((fh1=fopen(FLG_FILE,"r"))!=NULL) - { - fclose(fh1); - if(inet>=0) - { - if(wflag) - { - fh1=fopen(STS_FILE,"w"); - fprintf(fh1,"%s\n",msgchan); - fprintf(fh1,"Auto\n"); - fclose(fh1); - wflag=0; - } - if(t3!=t2) - { - sprintf(tstr,"%s",(blit^=1)?" ":" WZ"); -#ifdef HAVE_DBOX_HARDWARE - LCD_Read(); - LCD_draw_string(97, 13, tstr); - LCD_update(); -#endif - t3=t2; - } - sleep(1); - } - else - { - runtime=t2-t1; - if(runtime>rezap) - { - Do_Rezap(zapchan,vol,mut); - loop=0; - } - else - { - if(t3!=t2) - { - runtime=rezap-runtime; - sprintf(tstr,"%2d:%02d",runtime/60,runtime%60); - fh1=fopen(STS_FILE,"w"); - fprintf(fh1,"%s\n",msgchan); - fprintf(fh1,"%s\n",tstr); - fclose(fh1); -#ifdef HAVE_DBOX_HARDWARE - LCD_Read(); - LCD_draw_string(81, 13, tstr); - LCD_update(); -#endif - sleep(1); - t3=t2; - } - } - } - } - else - { - loop=0; - } - } - } - } -#ifdef HAVE_DBOX_HARDWARE - LCD_Close(); -#endif - if(inet>=0) - { - Close_Socket(); - } - sprintf(tstr,"cd /tmp\nrm blockads.*"); - system(tstr); - - return 0; -} - diff --git a/archive-sources/blockads/blockads.c b/archive-sources/blockads/blockads.c deleted file mode 100644 index 6083590..0000000 --- a/archive-sources/blockads/blockads.c +++ /dev/null @@ -1,573 +0,0 @@ -/* - * $Id: blockads.c,v 1.0 2010/04/25 18:00:00 Exp $ - * - * blockads - d-box2 linux project - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - * -*/ - -#include -#include -#include "blockads.h" -#include "gfx.h" -#include "io.h" -#include "text.h" -#include "http.h" -#include "globals.h" - -// CMCST, CMCS, CMCT, CMC, CMCIT, CMCI, CMHT, CMH -// WHITE, BLUE0, TRANSP, CMS, ORANGE, GREEN, YELLOW, RED - -unsigned char bl[] = {0x00, 0x00, 0xFF, 0x80, 0xFF, 0x80, 0x00, 0x80, - 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00}; -unsigned char gn[] = {0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xC0, 0x00, - 0xFF, 0x80, 0x00, 0x80, 0xC0, 0xFF, 0xFF, 0x00}; -unsigned char rd[] = {0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, - 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0xFF}; -unsigned char tr[] = {0xFF, 0xFF, 0xFF, 0xA0, 0xFF, 0xA0, 0xFF, 0xFF, - 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF }; - -static unsigned char menucoltxt[][25]={"Content_Selected_Text","Content_Selected","Content_Text","Content","Content_inactive_Text","Content_inactive","Head_Text","Head"}; - -struct fb_fix_screeninfo fix_screeninfo; -struct fb_var_screeninfo var_screeninfo; -int fb, rc; -int startx, starty, sx, ex, sy, ey; -int radius=10; -char msgchan[40]; -unsigned char *lfb, *lbb; - -static void ShowInfo(int index) -{ - int loop, tind; - char tstr[512]; - int ixw=240, iyw=300, dy, my, offs=10, soffs=3; - - dy=iyw/12; - my=2*dy; - - startx = sx + (((ex-sx) - ixw)/2); - starty = sy + (((ey-sy) - iyw)/2); - - tind=index; - - //frame layout - RenderBox(0, 0, ixw, iyw, radius, CMC); -// RenderBox(0, 0, ixw, iyw, GRID, CMCS, radius); - - // titlebar - RenderBox(2, 2, ixw-2, dy+2*soffs, radius, CMH); - - //selectbar - RenderBox(2, offs+soffs+(index+1)*dy, ixw, offs+soffs+(index+2)*dy, radius, CMCS); - - RenderString("Rezap-Zeit", 0, dy, ixw, CENTER, MED, CMHT); - - for(loop = 0; loop < 10; ++loop) - { - sprintf(tstr,"%1d =",(loop<9)?(loop+1):0); - RenderString(tstr, 10, offs+my, 40, CENTER, MED, (loop == tind)?CMCST:CMCT); - sprintf(tstr,"%2d min",wtime[loop]); - RenderString(tstr, 40, offs+my, ixw-60, RIGHT, MED, (loop == tind)?CMCST:CMCT); - my += dy; - } - - //copy backbuffer to framebuffer - memcpy(lfb, lbb, fix_screeninfo.line_length*var_screeninfo.yres); -} - -void Start_NoInet(char *chan) -{ -int ztim=30,cindex=0,cloop=1,found=0; -char nstr[128],sstr[50],*nptr; -FILE *fh; - - cindex=rezap-1; - if(cindex<0) - { - cindex=0; - } - if(cindex>9) - { - cindex=9; - } - - ShowInfo(cindex); - - do{ - //rcm=-1; - switch(/*(rcm = */GetRCCode()) - { - case RC_1: - cindex=0; - cloop=0; - break; - - case RC_2: - cindex=1; - cloop=0; - break; - - case RC_3: - cindex=2; - cloop=0; - break; - - case RC_4: - cindex=3; - cloop=0; - break; - - case RC_5: - cindex=4; - cloop=0; - break; - - case RC_6: - cindex=5; - cloop=0; - break; - - case RC_7: - cindex=6; - cloop=0; - break; - - case RC_8: - cindex=7; - cloop=0; - break; - - case RC_9: - cindex=8; - cloop=0; - break; - - case RC_0: - cindex=9; - cloop=0; - break; - - case RC_UP: - case RC_MINUS: --cindex; - break; - - case RC_DOWN: - case RC_PLUS: ++cindex; - break; - - case RC_OK: - cloop=0; - break; - - case RC_HOME: - cloop=-1; - break; - - case RC_BLUE: - cindex=rezap-1; - if(cindex<0) - { - cindex=0; - } - if(cindex>9) - { - cindex=9; - } - cloop=0; - break; - - case RC_MUTE: break; - - case RC_STANDBY: break; - - default: continue; - } - - if (cindex>=10) - { - cindex=0; - } - if(cindex<0) - { - cindex=9; - } - - ShowInfo(cindex); - - } while(cloop>0); - - if(cloop==0) - { - ztim=60*wtime[cindex]; - if((fh=fopen(FLG_FILE,"w"))!=NULL) - { - fprintf(fh,"%s\n-1\n%d\n%s\n%d\n%d\n%d\n",chan,ztim,msgchan,volume,mute,debounce); - fclose(fh); - system("/bin/blockad &"); - if((fh=fopen(CFG_FILE, "r"))!=NULL) - { - sprintf(sstr,"ZapChan%1d=",cindex); - while(!found && fgets(nstr, sizeof(nstr), fh)) - { - if(strstr(nstr,sstr)==nstr) - { - Trim_String(nstr); - nptr=strchr(nstr,'='); - ++nptr; - if(strlen(nptr)) - { - strncpy(sstr,nptr,sizeof(sstr)); - found=1; - } - } - } - fclose(fh); - } - if(found) - { - Do_Zap(sstr); - sprintf(nstr,"Umgeschaltet auf %s.\nAutomatische Rückschaltung in %d:00 min.",sstr,ztim/60); - } - else - { - sprintf(nstr,"Sie können jetzt umschalten.\nAutomatische Rückschaltung in %d:00 min.",ztim/60); - } - Msg_Popup(nstr); - } - } -} - -/****************************************************************************** - * Blockads Main - ******************************************************************************/ -int main (void) -{ -int loop=0,found,werbung=0,tnet, tv, cnum=-1, index; -char tstr[512],line_buffer[512],zapchan[40],srcchan[40],*cpt1=NULL; -FILE *fh1,*fh2; - - printf("Blockads Version %s\n",P_VERSION); - - sx = ex = sy = ey = -1; - - if((fh1=fopen(FLG_FILE,"r"))==NULL) - { -// system("ping -c 5 google.com &"); - fb = open(FB_DEVICE, O_RDWR); -// rc = open(RC_DEVICE, O_RDONLY); -// fcntl(rc, F_SETFL, (fcntl(rc, F_GETFL) | O_EXCL) & ~O_NONBLOCK); - InitRC(); - - read_neutrino_osd_conf ( &ex,&sx,&ey, &sy); - if ( ( ex == -1 ) || ( sx == -1 ) || ( ey == -1 ) || ( sy == -1 ) ) - { - sx = 100; - ex = 1180; - sy = 100; - ey = 620; - } - - for(index=CMCST; index<=CMH; index++) - { - sprintf(tstr,"menu_%s_alpha",menucoltxt[index]); - if((tv=Read_Neutrino_Cfg(tstr))>=0) - tr[index]=255-(float)tv*2.55; - - sprintf(tstr,"menu_%s_blue",menucoltxt[index]); - if((tv=Read_Neutrino_Cfg(tstr))>=0) - bl[index]=(float)tv*2.55; - - sprintf(tstr,"menu_%s_green",menucoltxt[index]); - if((tv=Read_Neutrino_Cfg(tstr))>=0) - gn[index]=(float)tv*2.55; - - sprintf(tstr,"menu_%s_red",menucoltxt[index]); - if((tv=Read_Neutrino_Cfg(tstr))>=0) - rd[index]=(float)tv*2.55; - } - - if(Read_Neutrino_Cfg("rounded_corners")>0) - radius=10; - else - radius=0; - - - //init framebuffer - if(ioctl(fb, FBIOGET_FSCREENINFO, &fix_screeninfo) == -1) - { - perror("Blockads \n"); - return -1; - } - if(ioctl(fb, FBIOGET_VSCREENINFO, &var_screeninfo) == -1) - { - perror("Blockads \n"); - return -1; - } - - if(!(lfb = (unsigned char*)mmap(0, fix_screeninfo.smem_len, PROT_READ | PROT_WRITE, MAP_SHARED, fb, 0))) - { - perror("Blockads \n"); - return -1; - } - - //init fontlibrary - - if((error = FT_Init_FreeType(&library))) - { - printf("Blockads ", error); - munmap(lfb, fix_screeninfo.smem_len); - return -1; - } - - if((error = FTC_Manager_New(library, 1, 2, 0, &MyFaceRequester, NULL, &manager))) - { - printf("Blockads \n", error); - FT_Done_FreeType(library); - munmap(lfb, fix_screeninfo.smem_len); - return -1; - } - - if((error = FTC_SBitCache_New(manager, &cache))) - { - printf("Blockads \n", error); - FTC_Manager_Done(manager); - FT_Done_FreeType(library); - munmap(lfb, fix_screeninfo.smem_len); - return -1; - } - - if((error = FTC_Manager_LookupFace(manager, FONT, &face))) - { - if((error = FTC_Manager_LookupFace(manager, FONT2, &face))) - { - printf("Blockads \n", error); - FTC_Manager_Done(manager); - FT_Done_FreeType(library); - munmap(lfb, fix_screeninfo.smem_len); - return 2; - } - else - desc.face_id = FONT2; - } - else - desc.face_id = FONT; - - use_kerning = FT_HAS_KERNING(face); - - desc.flags = FT_LOAD_MONOCHROME; - - //init backbuffer - if(!(lbb = malloc(fix_screeninfo.line_length*var_screeninfo.yres))) - { - perror("Blockads \n"); - FTC_Manager_Done(manager); - FT_Done_FreeType(library); - munmap(lfb, fix_screeninfo.smem_len); - return -1; - } - - //memset(lbb, TRANSP, var_screeninfo.xres*var_screeninfo.yres); - memset(lbb, 0, fix_screeninfo.line_length*var_screeninfo.yres); - - if (!ReadConf()) - { - printf("Blockads \n"); - return -1; - } - found=0; - loop=0; - if(!HTTP_downloadFile("localhost",80,"/control/channellist", LST_FILE, 0, 1)) - { - if(!HTTP_downloadFile("localhost",80,"/control/zapto", ZAP_FILE, 0, 1)) - { - if((fh1=fopen(ZAP_FILE,"r"))!=NULL) - { - while((fgets(line_buffer, sizeof(line_buffer), fh1)>0) && (strlen(line_buffer)<4)); - if(strlen(line_buffer)>1) - { - Trim_String(line_buffer); - strcpy(zapchan,line_buffer); - if((fh2=fopen(LST_FILE,"r"))!=NULL) - { - while(!found && (fgets(line_buffer, sizeof(line_buffer), fh2))) - { - if(strstr(line_buffer,zapchan)==line_buffer) - { - if((cpt1=strchr(line_buffer,' '))!=NULL) - { - cpt1++; - Trim_String(cpt1); - strcpy(msgchan,cpt1); - loop=1; - if(!Translate_Channel(cpt1, tstr)) - { - cnum=Get_ChannelNumber(tstr); - strcpy(srcchan,tstr); - found=1; - } - } - } - } - if(!found) - { - inet=-1; - } - fclose(fh2); - } - } - fclose(fh1); - } - } - } - if(!loop) - { - sprintf(tstr,"Fehler beim Auslesen der Kanalliste.\nPlugin konnte nicht gestartet werden."); - Msg_Popup(tstr); - return -1; - } - if(volume) - { - volume=0; - if(!HTTP_downloadFile("localhost",80,"/control/volume?status", ZAP_FILE, 0, 1)) - { - if((fh1=fopen(ZAP_FILE,"r"))!=NULL) - { - while((fgets(line_buffer, sizeof(line_buffer), fh1)>0) && !strlen(line_buffer)); - if(strlen(line_buffer)>=1) - { - Trim_String(line_buffer); - sscanf(line_buffer,"%d",&mute); - } - fclose(fh1); - } - } - if(!HTTP_downloadFile("localhost",80,"/control/volume", ZAP_FILE, 0, 1)) - { - if((fh1=fopen(ZAP_FILE,"r"))!=NULL) - { - while((fgets(line_buffer, sizeof(line_buffer), fh1)>0) && !strlen(line_buffer)); - if(strlen(line_buffer)>=1) - { - Trim_String(line_buffer); - sscanf(line_buffer,"%d",&volume); - } - fclose(fh1); - } - } - } - if(inet>=0) - { - tnet=-1; - if(Open_Socket()!=-1) - { - tv=Check_Socket(cnum,&werbung); - if(tv>0) - { - tnet=inet; - if(!werbung) - { - if(!zapalways) - { - int adf=0; - - sprintf(tstr,"Für Kanal %s wird\nmomentan keine Werbung gemeldet.\nWerbung läuft im Augenblick auf:\n",msgchan); - for(tv=0; tv -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include FT_FREETYPE_H -#include FT_CACHE_H -#include FT_CACHE_SMALL_BITMAPS_H -/* tested with freetype 2.3.9, and 2.1.4 */ -#if FREETYPE_MAJOR >= 2 && FREETYPE_MINOR >= 3 -#define FT_NEW_CACHE_API -#endif - -//#include "color.h" - -//rc codes - -#define RC1_0 0x5C00 -#define RC1_1 0x5C01 -#define RC1_2 0x5C02 -#define RC1_3 0x5C03 -#define RC1_4 0x5C04 -#define RC1_5 0x5C05 -#define RC1_6 0x5C06 -#define RC1_7 0x5C07 -#define RC1_8 0x5C08 -#define RC1_9 0x5C09 -#define RC1_STANDBY 0x5C0C -#define RC1_UP 0x5C0E -#define RC1_DOWN 0x5C0F -#define RC1_PLUS 0x5C16 -#define RC1_MINUS 0x5C17 -#define RC1_HOME 0x5C20 -#define RC1_DBOX 0x5C27 -#define RC1_MUTE 0x5C28 -#define RC1_RED 0x5C2D -#define RC1_RIGHT 0x5C2E -#define RC1_LEFT 0x5C2F -#define RC1_OK 0x5C30 -#define RC1_BLUE 0x5C3B -#define RC1_YELLOW 0x5C52 -#define RC1_GREEN 0x5C55 -#define RC1_HELP 0x5C82 - -#define RC_0 0x00 -#define RC_1 0x01 -#define RC_2 0x02 -#define RC_3 0x03 -#define RC_4 0x04 -#define RC_5 0x05 -#define RC_6 0x06 -#define RC_7 0x07 -#define RC_8 0x08 -#define RC_9 0x09 -#define RC_RIGHT 0x0A -#define RC_LEFT 0x0B -#define RC_UP 0x0C -#define RC_DOWN 0x0D -#define RC_OK 0x0E -#define RC_MUTE 0x0F -#define RC_STANDBY 0x10 -#define RC_GREEN 0x11 -#define RC_YELLOW 0x12 -#define RC_RED 0x13 -#define RC_BLUE 0x14 -#define RC_PLUS 0x15 -#define RC_MINUS 0x16 -#define RC_HELP 0x17 -#define RC_DBOX 0x18 -#define RC_HOME 0x1F - -//freetype stuff - -#define FONT2 "/share/fonts/pakenham.ttf" -// if font is not in usual place, we look here: -#define FONT "/share/fonts/neutrino.ttf" - -enum {FILL, GRID}; -enum {LEFT, CENTER, RIGHT}; -enum {SMALL, MED, BIG}; -enum {FT_PIC=1, FT_TEXT, FT_HTML, FT_TXHTM}; - -enum {CMCST, CMCS, CMCT, CMC, CMCIT, CMCI, CMHT, CMH, WHITE, BLUE1, GTRANSP, CMS, ORANGE, GREEN, YELLOW, RED}; -#define TRANSP 0 - - -FT_Error error; -FT_Library library; -FTC_Manager manager; -FTC_SBitCache cache; -FTC_SBit sbit; -#if FREETYPE_MAJOR == 2 && FREETYPE_MINOR == 0 -FTC_Image_Desc desc; -#else -FTC_ImageTypeRec desc; -#endif -FT_Face face; -FT_UInt prev_glyphindex; -FT_Bool use_kerning; - -//devs - -extern int fb; - -//framebuffer stuff - -extern unsigned char *lfb, *lbb; -extern unsigned char rd[], gn[], bl[], tr[]; - -extern struct fb_fix_screeninfo fix_screeninfo; -extern struct fb_var_screeninfo var_screeninfo; - -extern int startx, starty, sx, ex, sy, ey; -extern unsigned char *proxyadress, *proxyuserpwd; - - -#define FB_DEVICE "/dev/fb/0" -/* -#if HAVE_DVB_API_VERSION < 3 -#define RC_DEVICE "/dev/dbox/rc0" -#else -#define RC_DEVICE "/dev/input/event0" -#endif -*/ - -#endif diff --git a/archive-sources/blockads/gfx.c b/archive-sources/blockads/gfx.c deleted file mode 100644 index 5023939..0000000 --- a/archive-sources/blockads/gfx.c +++ /dev/null @@ -1,121 +0,0 @@ -/* - * $Id: gfx.c,v 1.0 2010/04/25 18:00:00 Exp $ - * - * blockads - d-box2 linux project - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - * -*/ - -#include "blockads.h" - -/****************************************************************************** - * RenderBox - ******************************************************************************/ - -void RenderBox(int sx, int sy, int ex, int ey, int rad, int col) -{ - int F,R=rad,ssx=startx+sx,ssy=starty+sy,dxx=ex-sx,dyy=ey-sy,rx,ry,wx,wy,count; - - unsigned char *pos=(lbb+(ssx<<2)+fix_screeninfo.line_length*ssy); - unsigned char *pos0, *pos1, *pos2, *pos3, *i; - unsigned char pix[4]={bl[col],gn[col],rd[col],tr[col]}; - - if (dxx<0) - { - printf("[Blockads] RenderBox called with dx < 0 (%d)\n", dxx); - dxx=0; - } - - if(R) - { - if(--dyy<=0) - { - dyy=1; - } - - if(R==1 || R>(dxx/2) || R>(dyy/2)) - { - R=dxx/10; - F=dyy/10; - if(R>F) - { - if(R>(dyy/3)) - { - R=dyy/3; - } - } - else - { - R=F; - if(R>(dxx/3)) - { - R=dxx/3; - } - } - } - ssx=0; - ssy=R; - F=1-R; - - rx=R-ssx; - ry=R-ssy; - - pos0=pos+((dyy-ry)*fix_screeninfo.line_length); - pos1=pos+(ry*fix_screeninfo.line_length); - pos2=pos+(rx*fix_screeninfo.line_length); - pos3=pos+((dyy-rx)*fix_screeninfo.line_length); - while (ssx <= ssy) - { - rx=R-ssx; - ry=R-ssy; - wx=rx<<1; - wy=ry<<1; - - for(i=pos0+(rx<<2); i -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -//#include -//#include -#include "globals.h" -#include "http.h" - -static char channels[NUM_CHANNELS][10]={"DSF","VOX","RTL","Pro7","ARD","9Live","Super RTL","Sat.1","EuroSport","NTV","Kabel 1","RTL II"}; - -int rezap=180, inet=-1, zapalways=0, volume=0, mute=0, debounce=15; -int socket_nummer; -int laenge; -int ergebnis; -int anzahl; -int i,nf=0; -struct sockaddr_in adresse; -char empfangene_zeichen[550]; -fd_set readset, writeset; -struct timeval to; -int timo=100000; -unsigned short int portnummer = 5450; -char ip_adresse[] = "217.160.185.104"; -int cnum=-1; -int wtime[10]={1,2,3,4,5,6,7,8,9,10}; - -int Get_ChannelNumber(char *chan) -{ -int rv=-1, i; - - for(i=0; rv==-1 && i=0) && (chan =buffer) && (*cptr<' ')) - { - *cptr=0; - --cptr; - } -} - -void read_neutrino_osd_conf(int *ex, int *sx, int *ey, int *sy) -{ - const char *filename="/var/tuxbox/config/neutrino.conf"; - const char spres[][5]={"","_crt","_lcd"}; - char sstr[4][32]; - int pres=-1, loop, *sptr[4]={ex, sx, ey, sy}; - char *buffer; - size_t len; - ssize_t read; - FILE* fd; - - fd = fopen(filename, "r"); - if(fd){ - buffer=NULL; - len = 0; - while ((read = getline(&buffer, &len, fd)) != -1){ - sscanf(buffer, "screen_preset=%d", &pres); - } - if(buffer) - free(buffer); - rewind(fd); - ++pres; - sprintf(sstr[0], "screen_EndX%s=%%d", spres[pres]); - sprintf(sstr[1], "screen_StartX%s=%%d", spres[pres]); - sprintf(sstr[2], "screen_EndY%s=%%d", spres[pres]); - sprintf(sstr[3], "screen_StartY%s=%%d", spres[pres]); - - buffer=NULL; - len = 0; - while ((read = getline(&buffer, &len, fd)) != -1){ - for(loop=0; loop<4; loop++) { - sscanf(buffer, sstr[loop], sptr[loop]); - } - } - fclose(fd); - if(buffer) - free(buffer); - } -} - -int Read_Neutrino_Cfg(char *entry) -{ -FILE *nfh; -char tstr [512], *cfptr=NULL; -int rv=-1; - - if((nfh=fopen(NCF_FILE,"r"))!=NULL) - { - tstr[0]=0; - - while((!feof(nfh)) && ((strstr(tstr,entry)==NULL) || ((cfptr=strchr(tstr,'='))==NULL))) - { - fgets(tstr,500,nfh); - } - if(!feof(nfh) && cfptr) - { - ++cfptr; - if(sscanf(cfptr,"%d",&rv)!=1) - { - rv=-1; - } - } - fclose(nfh); - } - return rv; -} - -int ReadConf() -{ - int i,j; - FILE *fd_conf; - char line_buffer[512],tstr[20]; - char *cptr; - - //open config - if(!(fd_conf = fopen(CFG_FILE, "r"))) - { - printf("Blockads \n"); - return 0; - } - - while(fgets(line_buffer, sizeof(line_buffer), fd_conf)) - { - Trim_String(line_buffer); - if((line_buffer[0]) && (line_buffer[0]!='#') && (line_buffer[0]>' ') && ((cptr=strchr(line_buffer,'='))!=NULL)) - { - for(i=0; i<10; i++) - { - sprintf(tstr,"Time%1d=",(i<9)?(i+1):0); - if(strstr(line_buffer,tstr) != NULL) - { - if(sscanf(cptr+1,"%d",&j)==1) - { - if(j>0 && j<100) - { - wtime[i]=j; - } - } - } - } - if(strstr(line_buffer,"RezapTime") != NULL) - { - sscanf(cptr+1,"%d",&rezap); - } - if(strstr(line_buffer,"ZapAlways") != NULL) - { - sscanf(cptr+1,"%d",&zapalways); - } - if(strstr(line_buffer,"KeepVolume") != NULL) - { - sscanf(cptr+1,"%d",&volume); - } - if(strstr(line_buffer,"Debounce") != NULL) - { - sscanf(cptr+1,"%d",&debounce); - } - if(strstr(line_buffer,"Internet") != NULL) - { - if(strstr(cptr+1,"DSL")!=NULL) - { - inet=0; - } - if(strstr(cptr+1,"ISDN")!=NULL) - { - inet=1; - } - if(strstr(cptr+1,"ANALOG")!=NULL) - { - inet=2; - } - } - } - } - fclose(fd_conf); - return 1; -} - -void Msg_Popup(char *msg) -{ -char mstr[512]="/control/message?popup=", *mptr=msg, *pptr; - - while(*mptr) - { - pptr=mstr+strlen(mstr); - switch (*mptr) - { - case ' ': sprintf(pptr,"%%20"); break; - case 10 : sprintf(pptr,"%%0A"); break; - case 13 : break; - case 'Ä': sprintf(pptr,"%%C3%%84"); break; - case 'Ö': sprintf(pptr,"%%C3%%96"); break; - case 'Ü': sprintf(pptr,"%%C3%%9C"); break; - case 'ä': sprintf(pptr,"%%C3%%A4"); break; - case 'ö': sprintf(pptr,"%%C3%%B6"); break; - case 'ü': sprintf(pptr,"%%C3%%BC"); break; - case 'ß': sprintf(pptr,"%%C3%%9F"); break; - default : sprintf(pptr,"%c",*mptr); break; - } - ++mptr; - } - HTTP_downloadFile("127.0.0.1",80, mstr, MSG_FILE, 0, 1); -} - - -int Translate_Channel(char *source, char *target) -{ -int rv=-1,found=0; -FILE *tfh; -char trstr[512],*pt1=NULL,*pt2=NULL; - - *target=0; - if((tfh=fopen(CFG_FILE,"r"))!=NULL) - { - while(!found && (fgets(trstr, sizeof(trstr), tfh))) - { - Trim_String(trstr); - if((strstr(trstr,"Programm=")==trstr) && ((pt1=strchr(trstr,'='))!=NULL) && ((pt2=strchr(pt1+1,','))!=NULL)) - { - pt1++; - *pt2=0; - pt2++; - if(strcmp(source,pt2)==0) - { - strcpy(target,pt1); - found=1; - rv=0; - } - } - } - fclose(tfh); - } - return rv; -} - -void Do_Zap(char *chan) -{ -char zstr[50]; - - sprintf(zstr,"pzapit -n \"%s\"",chan); - system(zstr); -} - -void Do_Rezap(char *chan, int vol, int mut) -{ -char zstr[150]; -FILE *fh1; -int avol, amut; - - if(!HTTP_downloadFile("localhost",80,"/control/volume?status", ZAP_FILE, 0, 1)) - { - if((fh1=fopen(ZAP_FILE,"r"))!=NULL) - { - while((fgets(zstr, sizeof(zstr), fh1)>0) && !strlen(zstr)); - if(strlen(zstr)>=1) - { - Trim_String(zstr); - sscanf(zstr,"%d",&amut); - } - fclose(fh1); - } - } - if(!HTTP_downloadFile("localhost",80,"/control/volume", ZAP_FILE, 0, 1)) - { - if((fh1=fopen(ZAP_FILE,"r"))!=NULL) - { - while((fgets(zstr, sizeof(zstr), fh1)>0) && !strlen(zstr)); - if(strlen(zstr)>=1) - { - Trim_String(zstr); - sscanf(zstr,"%d",&avol); - } - fclose(fh1); - } - } - sprintf(zstr,"/control/zapto?%s",chan); - HTTP_downloadFile("localhost", 80, zstr, MSG_FILE, 0, 1); - if(volume) - { -/* sprintf(zstr,"pzapit -%s",(mut)?"mute":"unmute"); - system(zstr); - sprintf(zstr,"pzapit -vol %d",vol); - system(zstr); -*/ - if(mut!=amut) - { - sprintf(zstr,"/control/volume?%s",(mut)?"mute":"unmute"); - HTTP_downloadFile("localhost",80,zstr, "/dev/null/", 0, 1); - } - if(vol!=avol) - { - sprintf(zstr,"/control/volume?%d",vol); - HTTP_downloadFile("localhost",80,zstr, "/dev/null/", 0, 1); - } - } - remove(FLG_FILE); -} diff --git a/archive-sources/blockads/globals.h b/archive-sources/blockads/globals.h deleted file mode 100644 index 212995d..0000000 --- a/archive-sources/blockads/globals.h +++ /dev/null @@ -1,58 +0,0 @@ -/* - * $Id: globals.h,v 1.0 2010/04/25 18:00:00 Exp $ - * - * blockads - d-box2 linux project - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - * -*/ - -#ifndef __GLOBALS_H__ -#define __GLOBALS_H__ - - -#define P_VERSION "0.78" - -#define ADS_FILE "/tmp/blockads.ads" -#define ZAP_FILE "/tmp/blockads.zap" -#define LST_FILE "/tmp/blockads.lst" -#define FLG_FILE "/tmp/blockads.flg" -#define MSG_FILE "/tmp/blockads.msg" -#define STS_FILE "/tmp/blockads.sts" -#define CFG_FILE "/var/tuxbox/config/blockads.conf" -#define NCF_FILE "/var/tuxbox/config/neutrino.conf" -#define NUM_CHANNELS 12 - - -extern int rezap, inet, zapalways, volume, mute, debounce; -extern int wtime[10]; - -void read_neutrino_osd_conf(int *ex, int *sx, int *ey, int *sy); -int Read_Neutrino_Cfg(char *entry); -int ReadConf(); -void Msg_Popup(char *msg); -void Trim_String(char *buffer); -int Translate_Channel(char *source, char *target); -int Get_ChannelNumber(char *chan); -char *Get_ChannelName(int chan); -void Do_Rezap(char *chan, int vol, int mut); -void Do_Zap(char *chan); - -int Open_Socket(void); -void Close_Socket(void); -int Check_Socket(int channel, int *state); -int Check_Channel(int channel, int *state); - -#endif diff --git a/archive-sources/blockads/http.c b/archive-sources/blockads/http.c deleted file mode 100644 index 8ee6132..0000000 --- a/archive-sources/blockads/http.c +++ /dev/null @@ -1,178 +0,0 @@ -/* - * $Id: http.c,v 1.0 2010/04/25 18:00:00 Exp $ - * - * blockads - d-box2 linux project - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - * -*/ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -//#include -#include "blockads.h" - -int HTTP_downloadFile(char *host, int port, char *page, char *downloadTarget, int tmo, int repeats) -{ - char tstr[256]; - - sprintf(tstr,"wget -Y off -q -O %s http://%s:%d%s",downloadTarget,host,port,page); - system(tstr); - return 0; -} - -/* -int HTTP_downloadFile(char *host, int port, char *page, char *downloadTarget, int tmo, int repeats) -{ - int socket_nummer; - int laenge; - int ergebnis,nf; - int anzahl=0; - struct hostent *hp; - fd_set readset, writeset; - struct sockaddr_in adresse; - char buf[65535],*wptr=NULL,*tptr=NULL; - struct timeval to; - int timo=100000; - FILE *fh; - - to.tv_sec = timo / 100000; - to.tv_usec = ( timo - ( to.tv_sec * 100000 ) ) * 10; - - if(( hp = gethostbyname( host )) != NULL ) - { - memcpy( &adresse.sin_addr.s_addr, hp->h_addr_list[0], sizeof(adresse.sin_addr.s_addr)); - } - else - { - perror(" unknown Host\n"); - return -1; - } - - sprintf(buf,"%03d.%03d.%03d.%03d",(unsigned char)hp->h_addr_list[0][0],(unsigned char)hp->h_addr_list[0][1],(unsigned char)hp->h_addr_list[0][2],(unsigned char)hp->h_addr_list[0][3]); - *buf=0; - - socket_nummer = socket(AF_INET, SOCK_STREAM, 0); - - adresse.sin_family = AF_INET; - adresse.sin_port = htons(port); - laenge = sizeof(adresse); - - ergebnis = connect(socket_nummer, (struct sockaddr *)&adresse, laenge); - - if (ergebnis == -1) - { - perror(" Keine Verbindung erfolgt: "); - return -1; - } - else - - { - - sprintf(buf,"GET %s HTTP/1.1\r\nHost: DBOX\r\n\r\n",page); - - anzahl = write(socket_nummer, buf, strlen(buf)+1); - - *buf=0; - laenge=0; - - nf=anzahl=1; - while(nf>0 && anzahl>0) - { - FD_ZERO( &readset ); - FD_ZERO( &writeset ); - FD_SET( socket_nummer, &readset ); - - if(( nf = select( socket_nummer + 1, &readset, &writeset, NULL, &to )) < 0 ) - { - printf("Socket error\n"); - return -1; - } - if(nf>0) - { - anzahl = read(socket_nummer, buf+laenge, 65534-laenge); - if(anzahl>0) - { - laenge+=anzahl; - } - } - } - anzahl=laenge; - buf[anzahl]= '\0'; - - if (strstr(buf,"200 OK") != NULL) - { - if((fh=fopen(downloadTarget,"w"))!=NULL) - { - if((wptr=strstr(buf,"Content-Type: text/html"))!=NULL) - { - wptr=strstr(buf,""); - } - else - { - if((wptr=strstr(buf,"Content-Type: text/plain"))!=NULL) - { - if((wptr=strchr(wptr,10))!=NULL) - { - wptr++; - if((wptr=strchr(wptr,10))!=NULL) - { - wptr++; - } - } - } - else - { - wptr=buf; - } - } - if(wptr) - { - if((tptr=strstr(buf,"Content-Length:"))!=NULL) - { - wptr=strchr(tptr,0x0A)+3; - } - fwrite(wptr, strlen(buf)-(wptr-buf), 1, fh); - } - fclose(fh); - if(!wptr) - { - remove(downloadTarget); - } - } - } - else - { - perror("\n Der Server hat die Datei nicht gesendet"); - } - } - - close(socket_nummer); - - return anzahl==0 || !wptr; -} -*/ diff --git a/archive-sources/blockads/http.h b/archive-sources/blockads/http.h deleted file mode 100644 index f9fd6f8..0000000 --- a/archive-sources/blockads/http.h +++ /dev/null @@ -1,27 +0,0 @@ -/* - * $Id: http.h,v 1.1 2010/03/03 20:47:03 rhabarber1848 Exp $ - * - * blockads - d-box2 linux project - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - * -*/ - -#ifndef __HTTP_H__ -#define __HTTP_H__ - -int HTTP_downloadFile(char *host, int port, char *page, char *downloadTarget, int tmo, int repeats); - -#endif diff --git a/archive-sources/blockads/io.c b/archive-sources/blockads/io.c deleted file mode 100644 index fbe2861..0000000 --- a/archive-sources/blockads/io.c +++ /dev/null @@ -1,128 +0,0 @@ -/* - * $Id: io.c,v 1.0 2010/04/25 18:00:00 Exp $ - * - * blockads - d-box2 linux project - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - * -*/ - -#include "io.h" -#include "blockads.h" - -struct input_event ev; -static unsigned short rccode=-1; -static int rc; - -int InitRC(void) -{ - rc = open(RC_DEVICE, O_RDONLY); - if(rc == -1) - { - perror("Blockads "); - exit(1); - } - fcntl(rc, F_SETFL, O_NONBLOCK | O_SYNC); - while(RCKeyPressed()); - return 1; -} - -int CloseRC(void) -{ - while(RCKeyPressed()); - close(rc); - return 1; -} - -int RCKeyPressed(void) -{ - if(read(rc, &ev, sizeof(ev)) == sizeof(ev)) - { - if(ev.value) - { - rccode=ev.code; - return 1; - } - } - rccode = -1; - return 0; -} - -int GetRCCode() -{ -#define REPEAT_TIMER 3 - static int count = 0; - static __u16 rc_last_key = KEY_RESERVED; - //get code - - if(read(rc, &ev, sizeof(ev)) == sizeof(ev)) - { - if(ev.value > 0 && ev.code != rc_last_key) - { - if ( ev.value == 2 ) - { - while ( count < REPEAT_TIMER ) - { - count++; - rccode = -1; - usleep(15000L); - return rccode; - } - } - else - count = 0; - - rc_last_key = ev.code; - switch(ev.code) - { - case KEY_UP: rccode = RC_UP; break; - case KEY_DOWN: rccode = RC_DOWN; break; - case KEY_LEFT: rccode = RC_LEFT; break; - case KEY_RIGHT: rccode = RC_RIGHT; break; - case KEY_OK: rccode = RC_OK; break; - case KEY_0: rccode = RC_0; break; - case KEY_1: rccode = RC_1; break; - case KEY_2: rccode = RC_2; break; - case KEY_3: rccode = RC_3; break; - case KEY_4: rccode = RC_4; break; - case KEY_5: rccode = RC_5; break; - case KEY_6: rccode = RC_6; break; - case KEY_7: rccode = RC_7; break; - case KEY_8: rccode = RC_8; break; - case KEY_9: rccode = RC_9; break; - case KEY_RED: rccode = RC_RED; break; - case KEY_GREEN: rccode = RC_GREEN; break; - case KEY_YELLOW: rccode = RC_YELLOW; break; - case KEY_BLUE: rccode = RC_BLUE; break; - case KEY_VOLUMEUP: rccode = RC_PLUS; break; - case KEY_VOLUMEDOWN: rccode = RC_MINUS; break; - case KEY_MUTE: rccode = RC_MUTE; break; - case KEY_HELP: rccode = RC_HELP; break; - case KEY_SETUP: rccode = RC_DBOX; break; - case KEY_EXIT: rccode = RC_HOME; break; - case KEY_POWER: rccode = RC_STANDBY;break; - default: rccode = -1; - } - return rccode; - } - else - { - rccode = -1; - rc_last_key = KEY_RESERVED; - } - } - return -1; -} - diff --git a/archive-sources/blockads/io.h b/archive-sources/blockads/io.h deleted file mode 100644 index 61b93f8..0000000 --- a/archive-sources/blockads/io.h +++ /dev/null @@ -1,33 +0,0 @@ -/* - * $Id: io.h,v 1.0 2010/04/25 18:00:00 Exp $ - * - * blockads - d-box2 linux project - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - * -*/ - -#ifndef __IO_H__ - -#define __IO_H__ - -#define RC_DEVICE "/dev/input/nevis_ir" - -int InitRC(void); -int CloseRC(void); -int RCKeyPressed(void); -int GetRCCode(); - -#endif diff --git a/archive-sources/blockads/lcd.c b/archive-sources/blockads/lcd.c deleted file mode 100644 index ecb0407..0000000 --- a/archive-sources/blockads/lcd.c +++ /dev/null @@ -1,323 +0,0 @@ -/* - * $Id: lcd.c,v 1.1 2010/03/03 20:47:03 rhabarber1848 Exp $ - * - * blockads - d-box2 linux project - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - * -*/ - -#include "lcd.h" -#include "lcd_font.h" - -static unsigned char raw[132][64]; -static unsigned char rawb[132][64]; -static unsigned char lcd[LCD_ROWS][LCD_COLS]; -static int fd=-1; -static unsigned char iconBasePath[512]; - -void LCD_Read(void) -{ -int x,y,z; -char tmp2; - - memset(raw,0,132*64); - read(fd, &lcd, 120*64/8); - for(x=0;x < LCD_COLS;x++) - { - for(y=0;y < LCD_ROWS; y++) - { - tmp2 = lcd[y][x]; - for(z=0;z <= 7;z++) - { - if(tmp2 & (1<=0) - { - close(fd); - fd=-1; - } - return 0; -} - -int LCD_invalid_col (int x) -{ - if( x > LCD_COLS ) - return -1; - if( x < 0 ) - return -1; - return 0; -} - -int LCD_invalid_row (int y) -{ - if( y > LCD_ROWS * 8 ) - return -1; - if( y < 0) - return -1; - return 0; -} - -void LCD_convert_data () -{ - int x,y,z; - char tmp2; - for(x=0;x < LCD_COLS;x++) { - for(y=0;y < LCD_ROWS;y++) { - tmp2 = 0; - for(z=0;z <= 7;z++) { - if(raw[x][y * 8 + z] == 1){ - tmp2|=1<0) - return 1; - return 0; -} - - -void LCD_draw_point (int x,int y, int state) -{ - if(state == LCD_PIXEL_INV) - { - if(raw[x][y] == LCD_PIXEL_ON) - raw[x][y] = LCD_PIXEL_OFF; - else - raw[x][y] = LCD_PIXEL_ON; - } - else - raw[x][y] = state; -} - - -/* - * draw_line - * - * args: - * x1 StartCol - * y1 StartRow - * x2 EndCol - * y1 EndRow - * state LCD_PIXEL_OFF/LCD_PIXEL_ON/LCD_PIXEL_INV - * - */ - -int abs(int val) -{ - return (val<0)?(-val):val; -} - -void LCD_draw_line (int x1, int y1, int x2, int y2, int state) -{ - int dx,dy,sdx,sdy,px,py,dxabs,dyabs,i; - float slope; - - if(LCD_invalid_col(x1) || LCD_invalid_col(x2)) - return; - - if(LCD_invalid_row(y1) || LCD_invalid_row(y2)) - return; - - dx=x2-x1; - dy=y2-y1; - dxabs=abs(dx); - dyabs=abs(dy); - sdx=LCD_sgn(dx); - sdy=LCD_sgn(dy); - if (dxabs>=dyabs) /* the line is more horizontal than vertical */ { - slope=(float)dy / (float)dx; - for(i=0;i!=dx;i+=sdx) { - px=i+x1; - py=(int)( slope*i+y1 ); - LCD_draw_point(px,py,state); - } - } - else /* the line is more vertical than horizontal */ { - slope=(float)dx / (float)dy; - for(i=0;i!=dy;i+=sdy) { - px=(int)(slope*i+x1); - py=i+y1; - LCD_draw_point(px,py,state); - } - } -} - - -void LCD_draw_fill_rect (int left,int top,int right,int bottom,int state) { - int x,y; - for(x = left + 1;x < right;x++) { - for(y = top + 1;y < bottom;y++) { - LCD_draw_point(x,y,state); - } - } -} - - -void LCD_draw_rectangle (int left,int top, int right, int bottom, int linestate,int fillstate) -{ - - if(LCD_invalid_col(left) || LCD_invalid_col(right)) - return; - - if(LCD_invalid_row(top) || LCD_invalid_row(bottom)) - return; - - LCD_draw_line(left,top,right,top,linestate); - LCD_draw_line(left,top,left,bottom,linestate); - LCD_draw_line(right,top,right,bottom,linestate); - LCD_draw_line(left,bottom,right,bottom,linestate); - LCD_draw_fill_rect(left,top,right,bottom,fillstate); -} - - -void LCD_draw_polygon(int num_vertices, int *vertices, int state) -{ - - //todo: mhh i think checking some coords. would be nice - - int i; - for(i=0;i> 8) | ((width & 0x00ff) << 8); - height=((height & 0xff00) >> 8) | ((height & 0x00ff) << 8); - - unsigned char pixbuf[200]; - for (count=0; count> 1 ); - unsigned char *pixpos = (unsigned char*) &pixbuf; - for (count2=0; count2> 1; count2 ++ ) - { - unsigned char compressed = *pixpos; - unsigned char pix1 = (compressed & 0xf0) >> 4; - unsigned char pix2 = (compressed & 0x0f); - - if (pix1 == col) - LCD_draw_point(x+(count2<<1),y+count, PIXEL_ON); - else - LCD_draw_point (x+(count2<<1),y+count, PIXEL_OFF); - if (pix2 == col) - LCD_draw_point(x+(count2<<1)+1,y+count, PIXEL_ON); - else - LCD_draw_point (x+(count2<<1)+1,y+count, PIXEL_OFF); - pixpos++; - } - } - - close(fd); -} diff --git a/archive-sources/blockads/lcd.h b/archive-sources/blockads/lcd.h deleted file mode 100644 index 09f8af7..0000000 --- a/archive-sources/blockads/lcd.h +++ /dev/null @@ -1,67 +0,0 @@ -/* - * $Id: lcd.h,v 1.1 2010/03/03 20:47:03 rhabarber1848 Exp $ - * - * blockads - d-box2 linux project - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - * -*/ - -#ifndef __lcddisplay__ -#define __lcddisplay__ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include - -enum - { - PIXEL_ON = LCD_PIXEL_ON, - PIXEL_OFF = LCD_PIXEL_OFF, - PIXEL_INV = LCD_PIXEL_INV - }; - - int LCD_Init(void); - void LCD_Clear(void); - int LCD_Close(void); - - int LCD_invalid_col(int x); - int LCD_invalid_row(int y); - void LCD_convert_data(); - int LCD_sgn(int arg); - void LCD_setIconBasePath(char *base); - void LCD_update(); - void LCD_Read(void); - - void LCD_draw_point (int x,int y, int state); - void LCD_draw_line (int x1, int y1, int x2, int y2, int state); - void LCD_draw_fill_rect (int left,int top,int right,int bottom,int state); - void LCD_draw_rectangle (int left,int top, int right, int bottom, int linestate,int fillstate); - void LCD_draw_polygon(int num_vertices, int *vertices, int state); - void LCD_draw_char(int x, int y, char c); - void LCD_draw_string(int x, int y, char *string); - - void LCD_paintIcon(unsigned char *filename, int x, int y, int col); - -#endif diff --git a/archive-sources/blockads/lcd_font.h b/archive-sources/blockads/lcd_font.h deleted file mode 100644 index e5d6bf8..0000000 --- a/archive-sources/blockads/lcd_font.h +++ /dev/null @@ -1,2598 +0,0 @@ -/* - * $Id: lcd_font.h,v 1.1 2010/03/03 20:47:03 rhabarber1848 Exp $ - * - * blockads - d-box2 linux project - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - * -*/ - -#define FONTDATAMAX 2048 - -static unsigned char font[FONTDATAMAX] = { - - /* 0 0x00 '^@' */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - - /* 1 0x01 '^A' */ - 0x7e, /* XXXXXX */ - 0x81, /* X X */ - 0xa5, /* X X X X */ - 0x81, /* X X */ - 0xbd, /* X XXXX X */ - 0x99, /* X XX X */ - 0x81, /* X X */ - 0x7e, /* XXXXXX */ - - /* 2 0x02 '^B' */ - 0x7e, /* XXXXXX */ - 0xff, /* XXXXXXXX */ - 0xdb, /* XX XX XX */ - 0xff, /* XXXXXXXX */ - 0xc3, /* XX XX */ - 0xe7, /* XXX XXX */ - 0xff, /* XXXXXXXX */ - 0x7e, /* XXXXXX */ - - /* 3 0x03 '^C' */ - 0x6c, /* XX XX */ - 0xfe, /* XXXXXXX */ - 0xfe, /* XXXXXXX */ - 0xfe, /* XXXXXXX */ - 0x7c, /* XXXXX */ - 0x38, /* XXX */ - 0x10, /* X */ - 0x00, /* */ - - /* 4 0x04 '^D' */ - 0x10, /* X */ - 0x38, /* XXX */ - 0x7c, /* XXXXX */ - 0xfe, /* XXXXXXX */ - 0x7c, /* XXXXX */ - 0x38, /* XXX */ - 0x10, /* X */ - 0x00, /* */ - - /* 5 0x05 '^E' */ - 0x38, /* XXX */ - 0x7c, /* XXXXX */ - 0x38, /* XXX */ - 0xfe, /* XXXXXXX */ - 0xfe, /* XXXXXXX */ - 0xd6, /* XX X XX */ - 0x10, /* X */ - 0x38, /* XXX */ - - /* 6 0x06 '^F' */ - 0x10, /* X */ - 0x38, /* XXX */ - 0x7c, /* XXXXX */ - 0xfe, /* XXXXXXX */ - 0xfe, /* XXXXXXX */ - 0x7c, /* XXXXX */ - 0x10, /* X */ - 0x38, /* XXX */ - - /* 7 0x07 '^G' */ - 0x00, /* */ - 0x00, /* */ - 0x18, /* XX */ - 0x3c, /* XXXX */ - 0x3c, /* XXXX */ - 0x18, /* XX */ - 0x00, /* */ - 0x00, /* */ - - /* 8 0x08 '^H' */ - 0xff, /* XXXXXXXX */ - 0xff, /* XXXXXXXX */ - 0xe7, /* XXX XXX */ - 0xc3, /* XX XX */ - 0xc3, /* XX XX */ - 0xe7, /* XXX XXX */ - 0xff, /* XXXXXXXX */ - 0xff, /* XXXXXXXX */ - - /* 9 0x09 '^I' */ - 0x00, /* */ - 0x3c, /* XXXX */ - 0x66, /* XX XX */ - 0x42, /* X X */ - 0x42, /* X X */ - 0x66, /* XX XX */ - 0x3c, /* XXXX */ - 0x00, /* */ - - /* 10 0x0a '^J' */ - 0xff, /* XXXXXXXX */ - 0xc3, /* XX XX */ - 0x99, /* X XX X */ - 0xbd, /* X XXXX X */ - 0xbd, /* X XXXX X */ - 0x99, /* X XX X */ - 0xc3, /* XX XX */ - 0xff, /* XXXXXXXX */ - - /* 11 0x0b '^K' */ - 0x0f, /* XXXX */ - 0x07, /* XXX */ - 0x0f, /* XXXX */ - 0x7d, /* XXXXX X */ - 0xcc, /* XX XX */ - 0xcc, /* XX XX */ - 0xcc, /* XX XX */ - 0x78, /* XXXX */ - - /* 12 0x0c '^L' */ - 0x3c, /* XXXX */ - 0x66, /* XX XX */ - 0x66, /* XX XX */ - 0x66, /* XX XX */ - 0x3c, /* XXXX */ - 0x18, /* XX */ - 0x7e, /* XXXXXX */ - 0x18, /* XX */ - - /* 13 0x0d '^M' */ - 0x3f, /* XXXXXX */ - 0x33, /* XX XX */ - 0x3f, /* XXXXXX */ - 0x30, /* XX */ - 0x30, /* XX */ - 0x70, /* XXX */ - 0xf0, /* XXXX */ - 0xe0, /* XXX */ - - /* 14 0x0e '^N' */ - 0x7f, /* XXXXXXX */ - 0x63, /* XX XX */ - 0x7f, /* XXXXXXX */ - 0x63, /* XX XX */ - 0x63, /* XX XX */ - 0x67, /* XX XXX */ - 0xe6, /* XXX XX */ - 0xc0, /* XX */ - - /* 15 0x0f '^O' */ - 0x18, /* XX */ - 0xdb, /* XX XX XX */ - 0x3c, /* XXXX */ - 0xe7, /* XXX XXX */ - 0xe7, /* XXX XXX */ - 0x3c, /* XXXX */ - 0xdb, /* XX XX XX */ - 0x18, /* XX */ - - /* 16 0x10 '^P' */ - 0x80, /* X */ - 0xe0, /* XXX */ - 0xf8, /* XXXXX */ - 0xfe, /* XXXXXXX */ - 0xf8, /* XXXXX */ - 0xe0, /* XXX */ - 0x80, /* X */ - 0x00, /* */ - - /* 17 0x11 '^Q' */ - 0x02, /* X */ - 0x0e, /* XXX */ - 0x3e, /* XXXXX */ - 0xfe, /* XXXXXXX */ - 0x3e, /* XXXXX */ - 0x0e, /* XXX */ - 0x02, /* X */ - 0x00, /* */ - - /* 18 0x12 '^R' */ - 0x18, /* XX */ - 0x3c, /* XXXX */ - 0x7e, /* XXXXXX */ - 0x18, /* XX */ - 0x18, /* XX */ - 0x7e, /* XXXXXX */ - 0x3c, /* XXXX */ - 0x18, /* XX */ - - /* 19 0x13 '^S' */ - 0x66, /* XX XX */ - 0x66, /* XX XX */ - 0x66, /* XX XX */ - 0x66, /* XX XX */ - 0x66, /* XX XX */ - 0x00, /* */ - 0x66, /* XX XX */ - 0x00, /* */ - - /* 20 0x14 '^T' */ - 0x7f, /* XXXXXXX */ - 0xdb, /* XX XX XX */ - 0xdb, /* XX XX XX */ - 0x7b, /* XXXX XX */ - 0x1b, /* XX XX */ - 0x1b, /* XX XX */ - 0x1b, /* XX XX */ - 0x00, /* */ - - /* 21 0x15 '^U' */ - 0x3e, /* XXXXX */ - 0x61, /* XX X */ - 0x3c, /* XXXX */ - 0x66, /* XX XX */ - 0x66, /* XX XX */ - 0x3c, /* XXXX */ - 0x86, /* X XX */ - 0x7c, /* XXXXX */ - - /* 22 0x16 '^V' */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x7e, /* XXXXXX */ - 0x7e, /* XXXXXX */ - 0x7e, /* XXXXXX */ - 0x00, /* */ - - /* 23 0x17 '^W' */ - 0x18, /* XX */ - 0x3c, /* XXXX */ - 0x7e, /* XXXXXX */ - 0x18, /* XX */ - 0x7e, /* XXXXXX */ - 0x3c, /* XXXX */ - 0x18, /* XX */ - 0xff, /* XXXXXXXX */ - - /* 24 0x18 '^X' */ - 0x18, /* XX */ - 0x3c, /* XXXX */ - 0x7e, /* XXXXXX */ - 0x18, /* XX */ - 0x18, /* XX */ - 0x18, /* XX */ - 0x18, /* XX */ - 0x00, /* */ - - /* 25 0x19 '^Y' */ - 0x18, /* XX */ - 0x18, /* XX */ - 0x18, /* XX */ - 0x18, /* XX */ - 0x7e, /* XXXXXX */ - 0x3c, /* XXXX */ - 0x18, /* XX */ - 0x00, /* */ - - /* 26 0x1a '^Z' */ - 0x00, /* */ - 0x18, /* XX */ - 0x0c, /* XX */ - 0xfe, /* XXXXXXX */ - 0x0c, /* XX */ - 0x18, /* XX */ - 0x00, /* */ - 0x00, /* */ - - /* 27 0x1b '^[' */ - 0x00, /* */ - 0x30, /* XX */ - 0x60, /* XX */ - 0xfe, /* XXXXXXX */ - 0x60, /* XX */ - 0x30, /* XX */ - 0x00, /* */ - 0x00, /* */ - - /* 28 0x1c '^\' */ - 0x00, /* */ - 0x00, /* */ - 0xc0, /* XX */ - 0xc0, /* XX */ - 0xc0, /* XX */ - 0xfe, /* XXXXXXX */ - 0x00, /* */ - 0x00, /* */ - - /* 29 0x1d '^]' */ - 0x00, /* */ - 0x24, /* X X */ - 0x66, /* XX XX */ - 0xff, /* XXXXXXXX */ - 0x66, /* XX XX */ - 0x24, /* X X */ - 0x00, /* */ - 0x00, /* */ - - /* 30 0x1e '^^' */ - 0x00, /* */ - 0x18, /* XX */ - 0x3c, /* XXXX */ - 0x7e, /* XXXXXX */ - 0xff, /* XXXXXXXX */ - 0xff, /* XXXXXXXX */ - 0x00, /* */ - 0x00, /* */ - - /* 31 0x1f '^_' */ - 0x00, /* */ - 0xff, /* XXXXXXXX */ - 0xff, /* XXXXXXXX */ - 0x7e, /* XXXXXX */ - 0x3c, /* XXXX */ - 0x18, /* XX */ - 0x00, /* */ - 0x00, /* */ - - /* 32 0x20 ' ' */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - - /* 33 0x21 '!' */ - 0x18, /* XX */ - 0x3c, /* XXXX */ - 0x3c, /* XXXX */ - 0x3c, /* XXXX */ - 0x18, /* XX */ - 0x00, /* */ - 0x18, /* XX */ - 0x00, /* */ - - /* 34 0x22 '"' */ - 0x6c, /* XX XX */ - 0x6c, /* XX XX */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - - /* 35 0x23 '#' */ - 0x6c, /* XX XX */ - 0x6c, /* XX XX */ - 0xfe, /* XXXXXXX */ - 0x6c, /* XX XX */ - 0xfe, /* XXXXXXX */ - 0x6c, /* XX XX */ - 0x6c, /* XX XX */ - 0x00, /* */ - - /* 36 0x24 '$' */ - 0x18, /* XX */ - 0x3e, /* XXXXX */ - 0x60, /* XX */ - 0x3c, /* XXXX */ - 0x06, /* XX */ - 0x7c, /* XXXXX */ - 0x18, /* XX */ - 0x00, /* */ - - /* 37 0x25 '%' */ - 0x00, /* */ - 0xc6, /* XX XX */ - 0xcc, /* XX XX */ - 0x18, /* XX */ - 0x30, /* XX */ - 0x66, /* XX XX */ - 0xc6, /* XX XX */ - 0x00, /* */ - - /* 38 0x26 '&' */ - 0x38, /* XXX */ - 0x6c, /* XX XX */ - 0x68, /* XX X */ - 0x76, /* XXX XX */ - 0xdc, /* XX XXX */ - 0xcc, /* XX XX */ - 0x76, /* XXX XX */ - 0x00, /* */ - - /* 39 0x27 ''' */ - 0x18, /* XX */ - 0x18, /* XX */ - 0x30, /* XX */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - - /* 40 0x28 '(' */ - 0x0c, /* XX */ - 0x18, /* XX */ - 0x30, /* XX */ - 0x30, /* XX */ - 0x30, /* XX */ - 0x18, /* XX */ - 0x0c, /* XX */ - 0x00, /* */ - - /* 41 0x29 ')' */ - 0x30, /* XX */ - 0x18, /* XX */ - 0x0c, /* XX */ - 0x0c, /* XX */ - 0x0c, /* XX */ - 0x18, /* XX */ - 0x30, /* XX */ - 0x00, /* */ - - /* 42 0x2a '*' */ - 0x00, /* */ - 0x66, /* XX XX */ - 0x3c, /* XXXX */ - 0xff, /* XXXXXXXX */ - 0x3c, /* XXXX */ - 0x66, /* XX XX */ - 0x00, /* */ - 0x00, /* */ - - /* 43 0x2b '+' */ - 0x00, /* */ - 0x18, /* XX */ - 0x18, /* XX */ - 0x7e, /* XXXXXX */ - 0x18, /* XX */ - 0x18, /* XX */ - 0x00, /* */ - 0x00, /* */ - - /* 44 0x2c ',' */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x18, /* XX */ - 0x18, /* XX */ - 0x30, /* XX */ - - /* 45 0x2d '-' */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x7e, /* XXXXXX */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - - /* 46 0x2e '.' */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x18, /* XX */ - 0x18, /* XX */ - 0x00, /* */ - - /* 47 0x2f '/' */ - 0x03, /* XX */ - 0x06, /* XX */ - 0x0c, /* XX */ - 0x18, /* XX */ - 0x30, /* XX */ - 0x60, /* XX */ - 0xc0, /* XX */ - 0x00, /* */ - - /* 48 0x30 '0' */ - 0x7c, /* XXXXX */ - 0xc6, /* XX XX */ - 0xde, /* XX XXXX */ - 0xfe, /* XXXXXXX */ - 0xf6, /* XXXX XX */ - 0xc6, /* XX XX */ - 0x7c, /* XXXXX */ - 0x00, /* */ - - /* 49 0x31 '1' */ - 0x18, /* XX */ - 0x78, /* XXXX */ - 0x18, /* XX */ - 0x18, /* XX */ - 0x18, /* XX */ - 0x18, /* XX */ - 0x18, /* XX */ - 0x00, /* */ - - /* 50 0x32 '2' */ - 0x7c, /* XXXXX */ - 0xc6, /* XX XX */ - 0x0c, /* XX */ - 0x18, /* XX */ - 0x30, /* XX */ - 0x60, /* XX */ - 0xfe, /* XXXXXXX */ - 0x00, /* */ - - /* 51 0x33 '3' */ - 0x7c, /* XXXXX */ - 0xc6, /* XX XX */ - 0x06, /* XX */ - 0x1c, /* XXX */ - 0x06, /* XX */ - 0xc6, /* XX XX */ - 0x7c, /* XXXXX */ - 0x00, /* */ - - /* 52 0x34 '4' */ - 0x1c, /* XXX */ - 0x3c, /* XXXX */ - 0x6c, /* XX XX */ - 0xcc, /* XX XX */ - 0xfe, /* XXXXXXX */ - 0x0c, /* XX */ - 0x0c, /* XX */ - 0x00, /* */ - - /* 53 0x35 '5' */ - 0xfe, /* XXXXXXX */ - 0xc0, /* XX */ - 0xfc, /* XXXXXX */ - 0x06, /* XX */ - 0x06, /* XX */ - 0xc6, /* XX XX */ - 0x7c, /* XXXXX */ - 0x00, /* */ - - /* 54 0x36 '6' */ - 0x38, /* XXX */ - 0x60, /* XX */ - 0xc0, /* XX */ - 0xfc, /* XXXXXX */ - 0xc6, /* XX XX */ - 0xc6, /* XX XX */ - 0x7c, /* XXXXX */ - 0x00, /* */ - - /* 55 0x37 '7' */ - 0xfe, /* XXXXXXX */ - 0x06, /* XX */ - 0x0c, /* XX */ - 0x18, /* XX */ - 0x30, /* XX */ - 0x60, /* XX */ - 0x60, /* XX */ - 0x00, /* */ - - /* 56 0x38 '8' */ - 0x7c, /* XXXXX */ - 0xc6, /* XX XX */ - 0xc6, /* XX XX */ - 0x7c, /* XXXXX */ - 0xc6, /* XX XX */ - 0xc6, /* XX XX */ - 0x7c, /* XXXXX */ - 0x00, /* */ - - /* 57 0x39 '9' */ - 0x7c, /* XXXXX */ - 0xc6, /* XX XX */ - 0xc6, /* XX XX */ - 0x7e, /* XXXXXX */ - 0x06, /* XX */ - 0x0c, /* XX */ - 0x38, /* XXX */ - 0x00, /* */ - - /* 58 0x3a ':' */ - 0x00, /* */ - 0x18, /* XX */ - 0x18, /* XX */ - 0x00, /* */ - 0x00, /* */ - 0x18, /* XX */ - 0x18, /* XX */ - 0x00, /* */ - - /* 59 0x3b ';' */ - 0x00, /* */ - 0x18, /* XX */ - 0x18, /* XX */ - 0x00, /* */ - 0x00, /* */ - 0x18, /* XX */ - 0x18, /* XX */ - 0x30, /* XX */ - - /* 60 0x3c '<' */ - 0x0c, /* XX */ - 0x18, /* XX */ - 0x30, /* XX */ - 0x60, /* XX */ - 0x30, /* XX */ - 0x18, /* XX */ - 0x0c, /* XX */ - 0x00, /* */ - - /* 61 0x3d '=' */ - 0x00, /* */ - 0x00, /* */ - 0x7e, /* XXXXXX */ - 0x00, /* */ - 0x00, /* */ - 0x7e, /* XXXXXX */ - 0x00, /* */ - 0x00, /* */ - - /* 62 0x3e '>' */ - 0x30, /* XX */ - 0x18, /* XX */ - 0x0c, /* XX */ - 0x06, /* XX */ - 0x0c, /* XX */ - 0x18, /* XX */ - 0x30, /* XX */ - 0x00, /* */ - - /* 63 0x3f '?' */ - 0x3c, /* XXXX */ - 0x66, /* XX XX */ - 0x06, /* XX */ - 0x0c, /* XX */ - 0x18, /* XX */ - 0x00, /* */ - 0x18, /* XX */ - 0x00, /* */ - - /* 64 0x40 '@' */ - 0x7c, /* XXXXX */ - 0xc6, /* XX XX */ - 0xde, /* XX XXXX */ - 0xde, /* XX XXXX */ - 0xde, /* XX XXXX */ - 0xc0, /* XX */ - 0x7c, /* XXXXX */ - 0x00, /* */ - - /* 65 0x41 'A' */ - 0x10, /* X */ - 0x38, /* XXX */ - 0x6c, /* XX XX */ - 0xc6, /* XX XX */ - 0xfe, /* XXXXXXX */ - 0xc6, /* XX XX */ - 0xc6, /* XX XX */ - 0x00, /* */ - - /* 66 0x42 'B' */ - 0xfc, /* XXXXXX */ - 0xc6, /* XX XX */ - 0xc6, /* XX XX */ - 0xfc, /* XXXXXX */ - 0xc6, /* XX XX */ - 0xc6, /* XX XX */ - 0xfc, /* XXXXXX */ - 0x00, /* */ - - /* 67 0x43 'C' */ - 0x7c, /* XXXXX */ - 0xc6, /* XX XX */ - 0xc0, /* XX */ - 0xc0, /* XX */ - 0xc0, /* XX */ - 0xc6, /* XX XX */ - 0x7c, /* XXXXX */ - 0x00, /* */ - - /* 68 0x44 'D' */ - 0xfc, /* XXXXXX */ - 0xc6, /* XX XX */ - 0xc6, /* XX XX */ - 0xc6, /* XX XX */ - 0xc6, /* XX XX */ - 0xc6, /* XX XX */ - 0xfc, /* XXXXXX */ - 0x00, /* */ - - /* 69 0x45 'E' */ - 0xfe, /* XXXXXXX */ - 0xc0, /* XX */ - 0xc0, /* XX */ - 0xf8, /* XXXXX */ - 0xc0, /* XX */ - 0xc0, /* XX */ - 0xfe, /* XXXXXXX */ - 0x00, /* */ - - /* 70 0x46 'F' */ - 0xfe, /* XXXXXXX */ - 0xc0, /* XX */ - 0xc0, /* XX */ - 0xf8, /* XXXXX */ - 0xc0, /* XX */ - 0xc0, /* XX */ - 0xc0, /* XX */ - 0x00, /* */ - - /* 71 0x47 'G' */ - 0x7c, /* XXXXX */ - 0xc6, /* XX XX */ - 0xc0, /* XX */ - 0xce, /* XX XXX */ - 0xc6, /* XX XX */ - 0xc6, /* XX XX */ - 0x7c, /* XXXXX */ - 0x00, /* */ - - /* 72 0x48 'H' */ - 0xc6, /* XX XX */ - 0xc6, /* XX XX */ - 0xc6, /* XX XX */ - 0xfe, /* XXXXXXX */ - 0xc6, /* XX XX */ - 0xc6, /* XX XX */ - 0xc6, /* XX XX */ - 0x00, /* */ - - /* 73 0x49 'I' */ - 0x7e, /* XXXXXX */ - 0x18, /* XX */ - 0x18, /* XX */ - 0x18, /* XX */ - 0x18, /* XX */ - 0x18, /* XX */ - 0x7e, /* XXXXXX */ - 0x00, /* */ - - /* 74 0x4a 'J' */ - 0x06, /* XX */ - 0x06, /* XX */ - 0x06, /* XX */ - 0x06, /* XX */ - 0xc6, /* XX XX */ - 0xc6, /* XX XX */ - 0x7c, /* XXXXX */ - 0x00, /* */ - - /* 75 0x4b 'K' */ - 0xc6, /* XX XX */ - 0xcc, /* XX XX */ - 0xd8, /* XX XX */ - 0xf0, /* XXXX */ - 0xd8, /* XX XX */ - 0xcc, /* XX XX */ - 0xc6, /* XX XX */ - 0x00, /* */ - - /* 76 0x4c 'L' */ - 0xc0, /* XX */ - 0xc0, /* XX */ - 0xc0, /* XX */ - 0xc0, /* XX */ - 0xc0, /* XX */ - 0xc0, /* XX */ - 0xfe, /* XXXXXXX */ - 0x00, /* */ - - /* 77 0x4d 'M' */ - 0x82, /* X X */ - 0xc6, /* XX XX */ - 0xee, /* XXX XXX */ - 0xfe, /* XXXXXXX */ - 0xd6, /* XX X XX */ - 0xc6, /* XX XX */ - 0xc6, /* XX XX */ - 0x00, /* */ - - /* 78 0x4e 'N' */ - 0xc6, /* XX XX */ - 0xe6, /* XXX XX */ - 0xf6, /* XXXX XX */ - 0xde, /* XX XXXX */ - 0xce, /* XX XXX */ - 0xc6, /* XX XX */ - 0xc6, /* XX XX */ - 0x00, /* */ - - /* 79 0x4f 'O' */ - 0x7c, /* XXXXX */ - 0xc6, /* XX XX */ - 0xc6, /* XX XX */ - 0xc6, /* XX XX */ - 0xc6, /* XX XX */ - 0xc6, /* XX XX */ - 0x7c, /* XXXXX */ - 0x00, /* */ - - /* 80 0x50 'P' */ - 0xfc, /* XXXXXX */ - 0xc6, /* XX XX */ - 0xc6, /* XX XX */ - 0xfc, /* XXXXXX */ - 0xc0, /* XX */ - 0xc0, /* XX */ - 0xc0, /* XX */ - 0x00, /* */ - - /* 81 0x51 'Q' */ - 0x7c, /* XXXXX */ - 0xc6, /* XX XX */ - 0xc6, /* XX XX */ - 0xc6, /* XX XX */ - 0xf6, /* XXXX XX */ - 0xde, /* XX XXXX */ - 0x7c, /* XXXXX */ - 0x06, /* XX */ - - /* 82 0x52 'R' */ - 0xfc, /* XXXXXX */ - 0xc6, /* XX XX */ - 0xc6, /* XX XX */ - 0xfc, /* XXXXXX */ - 0xd8, /* XX XX */ - 0xcc, /* XX XX */ - 0xc6, /* XX XX */ - 0x00, /* */ - - /* 83 0x53 'S' */ - 0x7c, /* XXXXX */ - 0xc6, /* XX XX */ - 0x60, /* XX */ - 0x38, /* XXX */ - 0x0c, /* XX */ - 0xc6, /* XX XX */ - 0x7c, /* XXXXX */ - 0x00, /* */ - - /* 84 0x54 'T' */ - 0x7e, /* XXXXXX */ - 0x18, /* XX */ - 0x18, /* XX */ - 0x18, /* XX */ - 0x18, /* XX */ - 0x18, /* XX */ - 0x18, /* XX */ - 0x00, /* */ - - /* 85 0x55 'U' */ - 0xc6, /* XX XX */ - 0xc6, /* XX XX */ - 0xc6, /* XX XX */ - 0xc6, /* XX XX */ - 0xc6, /* XX XX */ - 0xc6, /* XX XX */ - 0x7c, /* XXXXX */ - 0x00, /* */ - - /* 86 0x56 'V' */ - 0xc3, /* XX XX */ - 0xc3, /* XX XX */ - 0x66, /* XX XX */ - 0x66, /* XX XX */ - 0x3c, /* XXXX */ - 0x3c, /* XXXX */ - 0x18, /* XX */ - 0x00, /* */ - - /* 87 0x57 'W' */ - 0xc6, /* XX XX */ - 0xc6, /* XX XX */ - 0xc6, /* XX XX */ - 0xd6, /* XX X XX */ - 0xfe, /* XXXXXXX */ - 0xee, /* XXX XXX */ - 0xc6, /* XX XX */ - 0x00, /* */ - - /* 88 0x58 'X' */ - 0xc3, /* XX XX */ - 0x66, /* XX XX */ - 0x3c, /* XXXX */ - 0x18, /* XX */ - 0x3c, /* XXXX */ - 0x66, /* XX XX */ - 0xc3, /* XX XX */ - 0x00, /* */ - - /* 89 0x59 'Y' */ - 0xc3, /* XX XX */ - 0xc3, /* XX XX */ - 0x66, /* XX XX */ - 0x3c, /* XXXX */ - 0x18, /* XX */ - 0x18, /* XX */ - 0x18, /* XX */ - 0x00, /* */ - - /* 90 0x5a 'Z' */ - 0xfe, /* XXXXXXX */ - 0x06, /* XX */ - 0x0c, /* XX */ - 0x18, /* XX */ - 0x30, /* XX */ - 0x60, /* XX */ - 0xfe, /* XXXXXXX */ - 0x00, /* */ - - /* 91 0x5b '[' */ - 0x3c, /* XXXX */ - 0x30, /* XX */ - 0x30, /* XX */ - 0x30, /* XX */ - 0x30, /* XX */ - 0x30, /* XX */ - 0x3c, /* XXXX */ - 0x00, /* */ - - /* 92 0x5c '\' */ - 0xc0, /* XX */ - 0x60, /* XX */ - 0x30, /* XX */ - 0x18, /* XX */ - 0x0c, /* XX */ - 0x06, /* XX */ - 0x03, /* XX */ - 0x00, /* */ - - /* 93 0x5d ']' */ - 0x3c, /* XXXX */ - 0x0c, /* XX */ - 0x0c, /* XX */ - 0x0c, /* XX */ - 0x0c, /* XX */ - 0x0c, /* XX */ - 0x3c, /* XXXX */ - 0x00, /* */ - - /* 94 0x5e '^' */ - 0x10, /* X */ - 0x38, /* XXX */ - 0x6c, /* XX XX */ - 0xc6, /* XX XX */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - - /* 95 0x5f '_' */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0xfe, /* XXXXXXX */ - - /* 96 0x60 '`' */ - 0x18, /* XX */ - 0x18, /* XX */ - 0x0c, /* XX */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - - /* 97 0x61 'a' */ - 0x00, /* */ - 0x00, /* */ - 0x7c, /* XXXXX */ - 0x06, /* XX */ - 0x7e, /* XXXXXX */ - 0xc6, /* XX XX */ - 0x7e, /* XXXXXX */ - 0x00, /* */ - - /* 98 0x62 'b' */ - 0xc0, /* XX */ - 0xc0, /* XX */ - 0xfc, /* XXXXXX */ - 0xc6, /* XX XX */ - 0xc6, /* XX XX */ - 0xc6, /* XX XX */ - 0xfc, /* XXXXXX */ - 0x00, /* */ - - /* 99 0x63 'c' */ - 0x00, /* */ - 0x00, /* */ - 0x7c, /* XXXXX */ - 0xc6, /* XX XX */ - 0xc0, /* XX */ - 0xc6, /* XX XX */ - 0x7c, /* XXXXX */ - 0x00, /* */ - - /* 100 0x64 'd' */ - 0x06, /* XX */ - 0x06, /* XX */ - 0x7e, /* XXXXXX */ - 0xc6, /* XX XX */ - 0xc6, /* XX XX */ - 0xc6, /* XX XX */ - 0x7e, /* XXXXXX */ - 0x00, /* */ - - /* 101 0x65 'e' */ - 0x00, /* */ - 0x00, /* */ - 0x7c, /* XXXXX */ - 0xc6, /* XX XX */ - 0xfe, /* XXXXXXX */ - 0xc0, /* XX */ - 0x7c, /* XXXXX */ - 0x00, /* */ - - /* 102 0x66 'f' */ - 0x3c, /* XXXX */ - 0x66, /* XX XX */ - 0x60, /* XX */ - 0xf0, /* XXXX */ - 0x60, /* XX */ - 0x60, /* XX */ - 0x60, /* XX */ - 0x00, /* */ - - /* 103 0x67 'g' */ - 0x00, /* */ - 0x00, /* */ - 0x7e, /* XXXXXX */ - 0xc6, /* XX XX */ - 0xc6, /* XX XX */ - 0x7e, /* XXXXXX */ - 0x06, /* XX */ - 0x7c, /* XXXXX */ - - /* 104 0x68 'h' */ - 0xc0, /* XX */ - 0xc0, /* XX */ - 0xfc, /* XXXXXX */ - 0xc6, /* XX XX */ - 0xc6, /* XX XX */ - 0xc6, /* XX XX */ - 0xc6, /* XX XX */ - 0x00, /* */ - - /* 105 0x69 'i' */ - 0x18, /* XX */ - 0x00, /* */ - 0x38, /* XXX */ - 0x18, /* XX */ - 0x18, /* XX */ - 0x18, /* XX */ - 0x18, /* XX */ - 0x00, /* */ - - /* 106 0x6a 'j' */ - 0x06, /* XX */ - 0x00, /* */ - 0x06, /* XX */ - 0x06, /* XX */ - 0x06, /* XX */ - 0x06, /* XX */ - 0xc6, /* XX XX */ - 0x7c, /* XXXXX */ - - /* 107 0x6b 'k' */ - 0xc0, /* XX */ - 0xc0, /* XX */ - 0xcc, /* XX XX */ - 0xd8, /* XX XX */ - 0xf0, /* XXXX */ - 0xd8, /* XX XX */ - 0xcc, /* XX XX */ - 0x00, /* */ - - /* 108 0x6c 'l' */ - 0x38, /* XXX */ - 0x18, /* XX */ - 0x18, /* XX */ - 0x18, /* XX */ - 0x18, /* XX */ - 0x18, /* XX */ - 0x18, /* XX */ - 0x00, /* */ - - /* 109 0x6d 'm' */ - 0x00, /* */ - 0x00, /* */ - 0xec, /* XXX XX */ - 0xfe, /* XXXXXXX */ - 0xd6, /* XX X XX */ - 0xc6, /* XX XX */ - 0xc6, /* XX XX */ - 0x00, /* */ - - /* 110 0x6e 'n' */ - 0x00, /* */ - 0x00, /* */ - 0xfc, /* XXXXXX */ - 0xc6, /* XX XX */ - 0xc6, /* XX XX */ - 0xc6, /* XX XX */ - 0xc6, /* XX XX */ - 0x00, /* */ - - /* 111 0x6f 'o' */ - 0x00, /* */ - 0x00, /* */ - 0x7c, /* XXXXX */ - 0xc6, /* XX XX */ - 0xc6, /* XX XX */ - 0xc6, /* XX XX */ - 0x7c, /* XXXXX */ - 0x00, /* */ - - /* 112 0x70 'p' */ - 0x00, /* */ - 0x00, /* */ - 0xfc, /* XXXXXX */ - 0xc6, /* XX XX */ - 0xc6, /* XX XX */ - 0xfc, /* XXXXXX */ - 0xc0, /* XX */ - 0xc0, /* XX */ - - /* 113 0x71 'q' */ - 0x00, /* */ - 0x00, /* */ - 0x7e, /* XXXXXX */ - 0xc6, /* XX XX */ - 0xc6, /* XX XX */ - 0x7e, /* XXXXXX */ - 0x06, /* XX */ - 0x06, /* XX */ - - /* 114 0x72 'r' */ - 0x00, /* */ - 0x00, /* */ - 0xdc, /* XX XXX */ - 0xe6, /* XXX XX */ - 0xc0, /* XX */ - 0xc0, /* XX */ - 0xc0, /* XX */ - 0x00, /* */ - - /* 115 0x73 's' */ - 0x00, /* */ - 0x00, /* */ - 0x7e, /* XXXXXX */ - 0xc0, /* XX */ - 0x7c, /* XXXXX */ - 0x06, /* XX */ - 0xfc, /* XXXXXX */ - 0x00, /* */ - - /* 116 0x74 't' */ - 0x30, /* XX */ - 0x30, /* XX */ - 0x7c, /* XXXXX */ - 0x30, /* XX */ - 0x30, /* XX */ - 0x36, /* XX XX */ - 0x1c, /* XXX */ - 0x00, /* */ - - /* 117 0x75 'u' */ - 0x00, /* */ - 0x00, /* */ - 0xc6, /* XX XX */ - 0xc6, /* XX XX */ - 0xc6, /* XX XX */ - 0xc6, /* XX XX */ - 0x7c, /* XXXXX */ - 0x00, /* */ - - /* 118 0x76 'v' */ - 0x00, /* */ - 0x00, /* */ - 0xc6, /* XX XX */ - 0xc6, /* XX XX */ - 0xc6, /* XX XX */ - 0x6c, /* XX XX */ - 0x38, /* XXX */ - 0x00, /* */ - - /* 119 0x77 'w' */ - 0x00, /* */ - 0x00, /* */ - 0xc6, /* XX XX */ - 0xc6, /* XX XX */ - 0xd6, /* XX X XX */ - 0xfe, /* XXXXXXX */ - 0x6c, /* XX XX */ - 0x00, /* */ - - /* 120 0x78 'x' */ - 0x00, /* */ - 0x00, /* */ - 0xc6, /* XX XX */ - 0x6c, /* XX XX */ - 0x38, /* XXX */ - 0x6c, /* XX XX */ - 0xc6, /* XX XX */ - 0x00, /* */ - - /* 121 0x79 'y' */ - 0x00, /* */ - 0x00, /* */ - 0xc3, /* XX XX */ - 0x66, /* XX XX */ - 0x3c, /* XXXX */ - 0x18, /* XX */ - 0x30, /* XX */ - 0x60, /* XX */ - - /* 122 0x7a 'z' */ - 0x00, /* */ - 0x00, /* */ - 0xfe, /* XXXXXXX */ - 0x0c, /* XX */ - 0x38, /* XXX */ - 0x60, /* XX */ - 0xfe, /* XXXXXXX */ - 0x00, /* */ - - /* 123 0x7b '{' */ - 0x0e, /* XXX */ - 0x18, /* XX */ - 0x18, /* XX */ - 0x70, /* XXX */ - 0x18, /* XX */ - 0x18, /* XX */ - 0x0e, /* XXX */ - 0x00, /* */ - - /* 124 0x7c '|' */ - 0x18, /* XX */ - 0x18, /* XX */ - 0x18, /* XX */ - 0x18, /* XX */ - 0x18, /* XX */ - 0x18, /* XX */ - 0x18, /* XX */ - 0x00, /* */ - - /* 125 0x7d '}' */ - 0x70, /* XXX */ - 0x18, /* XX */ - 0x18, /* XX */ - 0x0e, /* XXX */ - 0x18, /* XX */ - 0x18, /* XX */ - 0x70, /* XXX */ - 0x00, /* */ - - /* 126 0x7e '~' */ - 0x72, /* XXX X */ - 0x9c, /* X XXX */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - - /* 127 0x7f '' */ - 0x00, /* */ - 0x10, /* X */ - 0x38, /* XXX */ - 0x6c, /* XX XX */ - 0xc6, /* XX XX */ - 0xc6, /* XX XX */ - 0xfe, /* XXXXXXX */ - 0x00, /* */ - - /* 128 0x80 '€' */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - - /* 129 0x81 '' */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - - /* 130 0x82 '‚' */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - - /* 131 0x83 'ƒ' */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - - /* 132 0x84 '„' */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - - /* 133 0x85 '…' */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - - /* 134 0x86 '†' */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - - /* 135 0x87 '‡' */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - - /* 136 0x88 'ˆ' */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - - /* 137 0x89 '‰' */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - - /* 138 0x8a 'Š' */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - - /* 139 0x8b '‹' */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - - /* 140 0x8c 'Œ' */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - - /* 141 0x8d '' */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - - /* 142 0x8e 'Ž' */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - - /* 143 0x8f '' */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - - /* 144 0x90 '' */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - - /* 145 0x91 '‘' */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - - /* 146 0x92 '’' */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - - /* 147 0x93 '“' */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - - /* 148 0x94 '”' */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - - /* 149 0x95 '•' */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - - /* 150 0x96 '–' */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - - /* 151 0x97 '—' */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - - /* 152 0x98 '˜' */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - - /* 153 0x99 '™' */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - - /* 154 0x9a 'š' */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - - /* 155 0x9b '›' */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - - /* 156 0x9c 'œ' */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - - /* 157 0x9d '' */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - - /* 158 0x9e 'ž' */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - - /* 159 0x9f 'Ÿ' */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - - /* 160 0xa0 ' ' */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - - /* 161 0xa1 '¡' */ - 0x18, /* XX */ - 0x00, /* */ - 0x18, /* XX */ - 0x18, /* XX */ - 0x3c, /* XXXX */ - 0x3c, /* XXXX */ - 0x18, /* XX */ - 0x00, /* */ - - /* 162 0xa2 '¢' */ - 0x18, /* XX */ - 0x18, /* XX */ - 0x7e, /* XXXXXX */ - 0xc0, /* XX */ - 0xc0, /* XX */ - 0x7e, /* XXXXXX */ - 0x18, /* XX */ - 0x18, /* XX */ - - /* 163 0xa3 '£' */ - 0x38, /* XXX */ - 0x6c, /* XX XX */ - 0x64, /* XX X */ - 0xf0, /* XXXX */ - 0x60, /* XX */ - 0x66, /* XX XX */ - 0xfc, /* XXXXXX */ - 0x00, /* */ - - /* 164 0xa4 '¤' */ - 0x00, /* */ - 0x99, /* X XX X */ - 0x42, /* X X */ - 0x81, /* X X */ - 0x81, /* X X */ - 0x42, /* X X */ - 0x99, /* X XX X */ - 0x00, /* */ - - /* 165 0xa5 '¥' */ - 0x66, /* XX XX */ - 0x66, /* XX XX */ - 0x3c, /* XXXX */ - 0x7e, /* XXXXXX */ - 0x18, /* XX */ - 0x7e, /* XXXXXX */ - 0x18, /* XX */ - 0x18, /* XX */ - - /* 166 0xa6 '¦' */ - 0x18, /* XX */ - 0x18, /* XX */ - 0x18, /* XX */ - 0x00, /* */ - 0x18, /* XX */ - 0x18, /* XX */ - 0x18, /* XX */ - 0x00, /* */ - - /* 167 0xa7 '§' */ - 0x3c, /* XXXX */ - 0x20, /* X */ - 0x70, /* XXX */ - 0x6c, /* XX XX */ - 0x36, /* XX XX */ - 0x1e, /* XXXX */ - 0x08, /* X */ - 0x78, /* XXXX */ - - /* 168 0xa8 '¨' */ - 0x00, /* */ - 0x24, /* X X */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - - /* 169 0xa9 '©' */ - 0x3c, /* XXXX */ - 0x42, /* X X */ - 0x99, /* X XX X */ - 0xa1, /* X X X */ - 0xa1, /* X X X */ - 0x99, /* X XX X */ - 0x42, /* X X */ - 0x3c, /* XXXX */ - - /* 170 0xaa 'ª' */ - 0x3c, /* XXXX */ - 0x6c, /* XX XX */ - 0x6c, /* XX XX */ - 0x3e, /* XXXXX */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - - /* 171 0xab '«' */ - 0x00, /* */ - 0x33, /* XX XX */ - 0x66, /* XX XX */ - 0xcc, /* XX XX */ - 0x66, /* XX XX */ - 0x33, /* XX XX */ - 0x00, /* */ - 0x00, /* */ - - /* 172 0xac '¬' */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0xfe, /* XXXXXXX */ - 0x06, /* XX */ - 0x06, /* XX */ - 0x00, /* */ - 0x00, /* */ - - /* 173 0xad '­' */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x18, /* XX */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - - /* 174 0xae '®' */ - 0x3c, /* XXXX */ - 0x42, /* X X */ - 0xb9, /* X XXX X */ - 0xa5, /* X X X X */ - 0xb9, /* X XXX X */ - 0xa5, /* X X X X */ - 0x66, /* XX XX */ - 0x3c, /* XXXX */ - - /* 175 0xaf '¯' */ - 0x7e, /* XXXXXX */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - - /* 176 0xb0 '°' */ - 0x38, /* XXX */ - 0x6c, /* XX XX */ - 0x6c, /* XX XX */ - 0x38, /* XXX */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - - /* 177 0xb1 '±' */ - 0x18, /* XX */ - 0x18, /* XX */ - 0x7e, /* XXXXXX */ - 0x18, /* XX */ - 0x18, /* XX */ - 0x00, /* */ - 0x7e, /* XXXXXX */ - 0x00, /* */ - - /* 178 0xb2 '²' */ - 0x78, /* XXXX */ - 0x0c, /* XX */ - 0x18, /* XX */ - 0x30, /* XX */ - 0x7c, /* XXXXX */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - - /* 179 0xb3 '³' */ - 0x18, /* XX */ - 0x04, /* X */ - 0x18, /* XX */ - 0x04, /* X */ - 0x18, /* XX */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - - /* 180 0xb4 '´' */ - 0x0c, /* XX */ - 0x10, /* X */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - - /* 181 0xb5 'µ' */ - 0x00, /* */ - 0x00, /* */ - 0x66, /* XX XX */ - 0x66, /* XX XX */ - 0x66, /* XX XX */ - 0x66, /* XX XX */ - 0x7c, /* XXXXX */ - 0xc0, /* XX */ - - /* 182 0xb6 '¶' */ - 0x3b, /* XXX XX */ - 0x4a, /* X X X */ - 0x4a, /* X X X */ - 0x3a, /* XXX X */ - 0x0a, /* X X */ - 0x0a, /* X X */ - 0x1b, /* XX XX */ - 0x00, /* */ - - /* 183 0xb7 '·' */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x18, /* XX */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - - /* 184 0xb8 '¸' */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x08, /* X */ - 0x04, /* X */ - 0x38, /* XXX */ - - /* 185 0xb9 '¹' */ - 0x08, /* XX */ - 0x18, /* XXX */ - 0x08, /* XX */ - 0x08, /* XX */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - - /* 186 0xba 'º' */ - 0x38, /* XXX */ - 0x6c, /* XX XX */ - 0x6c, /* XX XX */ - 0x38, /* XXX */ - 0x00, /* */ - 0x7c, /* XXXXX */ - 0x00, /* */ - 0x00, /* */ - - /* 187 0xbb '»' */ - 0x00, /* */ - 0xcc, /* XX XX */ - 0x66, /* XX XX */ - 0x33, /* XX XX */ - 0x66, /* XX XX */ - 0xcc, /* XX XX */ - 0x00, /* */ - 0x00, /* */ - - /* 188 0xbc '¼' */ - 0x63, /* XX XX */ - 0xe6, /* XXX XX */ - 0x6c, /* XX XX */ - 0x7a, /* XXXX X */ - 0x36, /* XX XX */ - 0x6a, /* XX X X */ - 0xdf, /* XX XXXXX */ - 0x06, /* XX */ - - /* 189 0xbd '½' */ - 0x63, /* XX XX */ - 0xe6, /* XXX XX */ - 0x6c, /* XX XX */ - 0x7e, /* XXXXXX */ - 0x33, /* XX XX */ - 0x66, /* XX XX */ - 0xcc, /* XX XX */ - 0x0f, /* XXXX */ - - /* 190 0xbe '¾' */ - 0x63, /* XX XX */ - 0x16, /* X XX */ - 0x6c, /* XX XX */ - 0x1a, /* XX X */ - 0xf6, /* XXXX XX */ - 0x6a, /* XX X X */ - 0xdf, /* XX XXXXX */ - 0x06, /* XX */ - - /* 191 0xbf '¿' */ - 0x18, /* XX */ - 0x00, /* */ - 0x18, /* XX */ - 0x18, /* XX */ - 0x30, /* XX */ - 0x63, /* XX XX */ - 0x3e, /* XXXXX */ - 0x00, /* */ - - /* 192 0xc0 'À' */ - 0x30, /* XX */ - 0x08, /* X */ - 0x38, /* XXX */ - 0x6c, /* XX XX */ - 0xc6, /* XX XX */ - 0xfe, /* XXXXXXX */ - 0xc6, /* XX XX */ - 0x00, /* */ - - /* 193 0xc1 'Á' */ - 0x0c, /* XX */ - 0x10, /* X */ - 0x38, /* XXX */ - 0x6c, /* XX XX */ - 0xc6, /* XX XX */ - 0xfe, /* XXXXXXX */ - 0xc6, /* XX XX */ - 0x00, /* */ - - /* 194 0xc2 'Â' */ - 0x18, /* XX */ - 0x24, /* X X */ - 0x38, /* XXX */ - 0x6c, /* XX XX */ - 0xc6, /* XX XX */ - 0xfe, /* XXXXXXX */ - 0xc6, /* XX XX */ - 0x00, /* */ - - /* 195 0xc3 'Ã' */ - 0x14, /* X X */ - 0x28, /* X X */ - 0x38, /* XXX */ - 0x6c, /* XX XX */ - 0xc6, /* XX XX */ - 0xfe, /* XXXXXXX */ - 0xc6, /* XX XX */ - 0x00, /* */ - - /* 196 0xc4 'Ä' */ - 0xc6, /* XX XX */ - 0x38, /* XXX */ - 0x6c, /* XX XX */ - 0xc6, /* XX XX */ - 0xfe, /* XXXXXXX */ - 0xc6, /* XX XX */ - 0xc6, /* XX XX */ - 0x00, /* */ - - /* 197 0xc5 'Å' */ - 0x38, /* XXX */ - 0x6c, /* XX XX */ - 0x7c, /* XXXXX */ - 0xc6, /* XX XX */ - 0xfe, /* XXXXXXX */ - 0xc6, /* XX XX */ - 0xc6, /* XX XX */ - 0x00, /* */ - - /* 198 0xc6 'Æ' */ - 0x3e, /* XXXXX */ - 0x6c, /* XX XX */ - 0xcc, /* XX XX */ - 0xfe, /* XXXXXXX */ - 0xcc, /* XX XX */ - 0xcc, /* XX XX */ - 0xce, /* XX XXX */ - 0x00, /* */ - - /* 199 0xc7 'Ç' */ - 0x7c, /* XXXXX */ - 0xc6, /* XX XX */ - 0xc0, /* XX */ - 0xc0, /* XX */ - 0xc6, /* XX XX */ - 0x7c, /* XXXXX */ - 0x0c, /* XX */ - 0x78, /* XXXX */ - - /* 200 0xc8 'È' */ - 0x30, /* XX */ - 0x08, /* X */ - 0xfe, /* XXXXXXX */ - 0xc0, /* XX */ - 0xf8, /* XXXXX */ - 0xc0, /* XX */ - 0xfe, /* XXXXXXX */ - 0x00, /* */ - - /* 201 0xc9 'É' */ - 0x18, /* XX */ - 0x30, /* XX */ - 0xfe, /* XXXXXXX */ - 0xc0, /* XX */ - 0xf8, /* XXXXX */ - 0xc0, /* XX */ - 0xfe, /* XXXXXXX */ - 0x00, /* */ - - /* 202 0xca 'Ê' */ - 0x18, /* XX */ - 0x24, /* X X */ - 0xfe, /* XXXXXXX */ - 0xc0, /* XX */ - 0xf8, /* XXXXX */ - 0xc0, /* XX */ - 0xfe, /* XXXXXXX */ - 0x00, /* */ - - /* 203 0xcb 'Ë' */ - 0x24, /* X X */ - 0x00, /* */ - 0xfe, /* XXXXXXX */ - 0xc0, /* XX */ - 0xf8, /* XXXXX */ - 0xc0, /* XX */ - 0xfe, /* XXXXXXX */ - 0x00, /* */ - - /* 204 0xcc 'Ì' */ - 0x30, /* XX */ - 0x08, /* X */ - 0x7e, /* XXXXXX */ - 0x18, /* XX */ - 0x18, /* XX */ - 0x18, /* XX */ - 0x7e, /* XXXXXX */ - 0x00, /* */ - - /* 205 0xcd 'Í' */ - 0x0c, /* XX */ - 0x10, /* X */ - 0x7e, /* XXXXXX */ - 0x18, /* XX */ - 0x18, /* XX */ - 0x18, /* XX */ - 0x7e, /* XXXXXX */ - 0x00, /* */ - - /* 206 0xce 'Î' */ - 0x18, /* XX */ - 0x24, /* X X */ - 0x7e, /* XXXXXX */ - 0x18, /* XX */ - 0x18, /* XX */ - 0x18, /* XX */ - 0x7e, /* XXXXXX */ - 0x00, /* */ - - /* 207 0xcf 'Ï' */ - 0x24, /* X X */ - 0x00, /* */ - 0x7e, /* XXXXXX */ - 0x18, /* XX */ - 0x18, /* XX */ - 0x18, /* XX */ - 0x7e, /* XXXXXX */ - 0x00, /* */ - - /* 208 0xd0 'Ð' */ - 0xfc, /* XXXXXX */ - 0xc6, /* XX XX */ - 0xf6, /* XXXX XX */ - 0xc6, /* XX XX */ - 0xc6, /* XX XX */ - 0xc6, /* XX XX */ - 0xfc, /* XXXXXX */ - 0x00, /* */ - - /* 209 0xd1 'Ñ' */ - 0x76, /* XXX XX */ - 0xdc, /* XX XXX */ - 0x00, /* */ - 0xe6, /* XXX XX */ - 0xf6, /* XXXX XX */ - 0xde, /* XX XXXX */ - 0xce, /* XX XXX */ - 0x00, /* */ - - /* 210 0xd2 'Ò' */ - 0x30, /* XX */ - 0x08, /* X */ - 0x7c, /* XXXXX */ - 0xc6, /* XX XX */ - 0xc6, /* XX XX */ - 0xc6, /* XX XX */ - 0x7c, /* XXXXX */ - 0x00, /* */ - - /* 211 0xd3 'Ó' */ - 0x0c, /* XX */ - 0x10, /* X */ - 0x7c, /* XXXXX */ - 0xc6, /* XX XX */ - 0xc6, /* XX XX */ - 0xc6, /* XX XX */ - 0x7c, /* XXXXX */ - 0x00, /* */ - - /* 212 0xd4 'Ô' */ - 0x18, /* XX */ - 0x24, /* X X */ - 0x7c, /* XXXXX */ - 0xc6, /* XX XX */ - 0xc6, /* XX XX */ - 0xc6, /* XX XX */ - 0x7c, /* XXXXX */ - 0x00, /* */ - - /* 213 0xd5 'Õ' */ - 0x34, /* XX X */ - 0x0c, /* XX */ - 0x7c, /* XXXXX */ - 0xc6, /* XX XX */ - 0xc6, /* XX XX */ - 0xc6, /* XX XX */ - 0x7c, /* XXXXX */ - 0x00, /* */ - - /* 214 0xd6 'Ö' */ - 0xc6, /* XX XX */ - 0x38, /* XXX */ - 0x6c, /* XX XX */ - 0xc6, /* XX XX */ - 0xc6, /* XX XX */ - 0x6c, /* XX XX */ - 0x38, /* XXX */ - 0x00, /* */ - - /* 215 0xd7 '×' */ - 0x00, /* */ - 0x00, /* */ - 0xc3, /* XX XX */ - 0x66, /* XX XX */ - 0x18, /* XX */ - 0x66, /* XX XX */ - 0xc3, /* XX XX */ - 0x00, /* */ - - /* 216 0xd8 'Ø' */ - 0x19, /* XX X */ - 0x26, /* X XX */ - 0x46, /* X XX */ - 0x4a, /* X X X */ - 0x52, /* X X X */ - 0x24, /* X X */ - 0x58, /* X XX */ - 0x00, /* */ - - /* 217 0xd9 'Ù' */ - 0x30, /* XX */ - 0x08, /* X */ - 0xc6, /* XX XX */ - 0xc6, /* XX XX */ - 0xc6, /* XX XX */ - 0xc6, /* XX XX */ - 0x7c, /* XXXXX */ - 0x00, /* */ - - /* 218 0xda 'Ú' */ - 0x0c, /* XX */ - 0x10, /* X */ - 0xc6, /* XX XX */ - 0xc6, /* XX XX */ - 0xc6, /* XX XX */ - 0xc6, /* XX XX */ - 0x7c, /* XXXXX */ - 0x00, /* */ - - /* 219 0xdb 'Û' */ - 0x18, /* XX */ - 0x24, /* X X */ - 0xc6, /* XX XX */ - 0xc6, /* XX XX */ - 0xc6, /* XX XX */ - 0xc6, /* XX XX */ - 0x7c, /* XXXXX */ - 0x00, /* */ - - /* 220 0xdc 'Ü' */ - 0xc6, /* XX XX */ - 0x00, /* */ - 0xc6, /* XX XX */ - 0xc6, /* XX XX */ - 0xc6, /* XX XX */ - 0xc6, /* XX XX */ - 0x7c, /* XXXXX */ - 0x00, /* */ -#if 0 - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0x00, /* */ - 0xff, /* XXXXXXXX */ - 0xff, /* XXXXXXXX */ - 0xff, /* XXXXXXXX */ - 0xff, /* XXXXXXXX */ -#endif - - /* 221 0xdd 'Ý' */ - 0x0c, /* XX */ - 0x10, /* X */ - 0xc3, /* XX XX */ - 0x66, /* XX XX */ - 0x3c, /* XXXX */ - 0x18, /* XX */ - 0x18, /* XX */ - 0x00, /* */ - - /* 222 0xde 'Þ' */ - 0x00, /* */ - 0x70, /* XXX */ - 0x78, /* XXXXX */ - 0x64, /* XX XX */ - 0x78, /* XXXXX */ - 0x60, /* XX */ - 0x78, /* XXX */ - 0x00, /* */ - - /* 223 0xdf 'ß' */ - 0x78, /* XXXX */ - 0xcc, /* XX XX */ - 0xcc, /* XX XX */ - 0xd8, /* XX XX */ - 0xcc, /* XX XX */ - 0xc6, /* XX XX */ - 0xcc, /* XX XX */ - 0x00, /* */ - - /* 224 0xe0 'à' */ - 0x30, /* XX */ - 0x18, /* XX */ - 0x78, /* XXXX */ - 0x0c, /* XX */ - 0x7c, /* XXXXX */ - 0xcc, /* XX XX */ - 0x76, /* XXX XX */ - 0x00, /* */ - - /* 225 0xe1 'á' */ - 0x18, /* XX */ - 0x30, /* XX */ - 0x78, /* XXXX */ - 0x0c, /* XX */ - 0x7c, /* XXXXX */ - 0xcc, /* XX XX */ - 0x76, /* XXX XX */ - 0x00, /* */ - - /* 226 0xe2 'â' */ - 0x18, /* XX */ - 0x30, /* XX */ - 0x78, /* XXXX */ - 0x0c, /* XX */ - 0x7c, /* XXXXX */ - 0xcc, /* XX XX */ - 0x76, /* XXX XX */ - 0x00, /* */ - - /* 227 0xe3 'ã' */ - 0x14, /* X X */ - 0x28, /* X X */ - 0x78, /* XXXX */ - 0x0c, /* XX */ - 0x7c, /* XXXXX */ - 0xcc, /* XX XX */ - 0x76, /* XXX XX */ - 0x00, /* */ - - /* 228 0xe4 'ä' */ - 0xc6, /* XX XX */ - 0x00, /* */ - 0x78, /* XXXX */ - 0x0c, /* XX */ - 0x7c, /* XXXXX */ - 0xcc, /* XX XX */ - 0x76, /* XXX XX */ - 0x00, /* */ - - /* 229 0xe5 'å' */ - 0x30, /* XX */ - 0x30, /* XX */ - 0x78, /* XXXX */ - 0x0c, /* XX */ - 0x7c, /* XXXXX */ - 0xcc, /* XX XX */ - 0x76, /* XXX XX */ - 0x00, /* */ - - /* 230 0xe6 'æ' */ - 0x00, /* */ - 0x00, /* */ - 0x7e, /* XXXXXX */ - 0x18, /* XX */ - 0x7e, /* XXXXXX */ - 0xd8, /* XX XX */ - 0x7e, /* XXXXXX */ - 0x00, /* */ - - /* 231 0xe7 'ç' */ - 0x00, /* */ - 0x00, /* */ - 0x7e, /* XXXXXX */ - 0xc0, /* XX */ - 0xc0, /* XX */ - 0x7e, /* XXXXXX */ - 0x0c, /* XX */ - 0x38, /* XXX */ - - /* 232 0xe8 'è' */ - 0x30, /* XX */ - 0x18, /* XX */ - 0x7c, /* XXXXX */ - 0xc6, /* XX XX */ - 0xfe, /* XXXXXXX */ - 0xc0, /* XX */ - 0x7c, /* XXXXX */ - 0x00, /* */ - - /* 233 0xe9 'é' */ - 0x0c, /* XX */ - 0x18, /* XX */ - 0x7c, /* XXXXX */ - 0xc6, /* XX XX */ - 0xfe, /* XXXXXXX */ - 0xc0, /* XX */ - 0x7c, /* XXXXX */ - 0x00, /* */ - - /* 234 0xea 'ê' */ - 0x7c, /* XXXXX */ - 0x82, /* X X */ - 0x7c, /* XXXXX */ - 0xc6, /* XX XX */ - 0xfe, /* XXXXXXX */ - 0xc0, /* XX */ - 0x7c, /* XXXXX */ - 0x00, /* */ - - /* 235 0xeb 'ë' */ - 0xc6, /* XX XX */ - 0x00, /* */ - 0x7c, /* XXXXX */ - 0xc6, /* XX XX */ - 0xfe, /* XXXXXXX */ - 0xc0, /* XX */ - 0x7c, /* XXXXX */ - 0x00, /* */ - - /* 236 0xec 'ì' */ - 0x30, /* XX */ - 0x18, /* XX */ - 0x00, /* */ - 0x38, /* XXX */ - 0x18, /* XX */ - 0x18, /* XX */ - 0x3c, /* XXXX */ - 0x00, /* */ - - /* 237 0xed 'í' */ - 0x06, /* XX */ - 0x0c, /* XX */ - 0x7e, /* XXXXXX */ - 0xdb, /* XX XX XX */ - 0xdb, /* XX XX XX */ - 0x7e, /* XXXXXX */ - 0x60, /* XX */ - 0xc0, /* XX */ - - /* 238 0xee 'î' */ - 0x7c, /* XXXXX */ - 0x82, /* X X */ - 0x38, /* XXX */ - 0x18, /* XX */ - 0x18, /* XX */ - 0x18, /* XX */ - 0x3c, /* XXXX */ - 0x00, /* */ - - /* 239 0xef 'ï' */ - 0x66, /* XX XX */ - 0x00, /* */ - 0x38, /* XXX */ - 0x18, /* XX */ - 0x18, /* XX */ - 0x18, /* XX */ - 0x3c, /* XXXX */ - 0x00, /* */ - - /* 240 0xf0 'ð' */ - 0x34, /* XX X */ - 0x0c, /* XX */ - 0x7c, /* XXXXX */ - 0xc6, /* XX XX */ - 0xc6, /* XX XX */ - 0xc6, /* XX XX */ - 0x7c, /* XXXXX */ - 0x00, /* */ - - /* 241 0xf1 'ñ' */ - 0x76, /* XXX XX */ - 0xdc, /* XX XXX */ - 0x00, /* */ - 0xdc, /* XX XXX */ - 0x66, /* XX XX */ - 0x66, /* XX XX */ - 0x66, /* XX XX */ - 0x00, /* */ - - /* 242 0xf2 'ò' */ - 0x30, /* XX */ - 0x18, /* XX */ - 0x7c, /* XXXXX */ - 0xc6, /* XX XX */ - 0xc6, /* XX XX */ - 0xc6, /* XX XX */ - 0x7c, /* XXXXX */ - 0x00, /* */ - - /* 243 0xf3 'ó' */ - 0x0c, /* XX */ - 0x18, /* XX */ - 0x7c, /* XXXXX */ - 0xc6, /* XX XX */ - 0xc6, /* XX XX */ - 0xc6, /* XX XX */ - 0x7c, /* XXXXX */ - 0x00, /* */ - - /* 244 0xf4 'ô' */ - 0x7c, /* XXXXX */ - 0x82, /* X X */ - 0x7c, /* XXXXX */ - 0xc6, /* XX XX */ - 0xc6, /* XX XX */ - 0xc6, /* XX XX */ - 0x7c, /* XXXXX */ - 0x00, /* */ - - /* 245 0xf5 'õ' */ - 0x14, /* X X */ - 0x28, /* X X */ - 0x7c, /* XXXXX */ - 0xc6, /* XX XX */ - 0xc6, /* XX XX */ - 0xc6, /* XX XX */ - 0x7c, /* XXXXX */ - 0x00, /* */ - - /* 246 0xf6 'ö' */ - 0xc6, /* XX XX */ - 0x00, /* */ - 0x7c, /* XXXXX */ - 0xc6, /* XX XX */ - 0xc6, /* XX XX */ - 0xc6, /* XX XX */ - 0x7c, /* XXXXX */ - 0x00, /* */ - - /* 247 0xf7 '÷' */ - 0x00, /* */ - 0x18, /* XX */ - 0x00, /* */ - 0x7e, /* XXXXXX */ - 0x00, /* */ - 0x18, /* XX */ - 0x00, /* */ - 0x00, /* */ - - /* 248 0xf8 'ø' */ - 0x00, /* */ - 0x1a, /* XX X */ - 0x24, /* X X */ - 0x4a, /* X X X */ - 0x52, /* X X X */ - 0x24, /* X X */ - 0x58, /* X XX */ - 0x00, /* */ - - /* 249 0xf9 'ù' */ - 0x60, /* XX */ - 0x30, /* XX */ - 0xcc, /* XX XX */ - 0xcc, /* XX XX */ - 0xcc, /* XX XX */ - 0xcc, /* XX XX */ - 0x76, /* XXX XX */ - 0x00, /* */ - - /* 250 0xfa 'ú' */ - 0x18, /* XX */ - 0x30, /* XX */ - 0xcc, /* XX XX */ - 0xcc, /* XX XX */ - 0xcc, /* XX XX */ - 0xcc, /* XX XX */ - 0x76, /* XXX XX */ - 0x00, /* */ - - /* 251 0xfb 'û' */ - 0x78, /* XXXX */ - 0x84, /* X X */ - 0x00, /* */ - 0xcc, /* XX XX */ - 0xcc, /* XX XX */ - 0xcc, /* XX XX */ - 0x76, /* XXX XX */ - 0x00, /* */ - - /* 252 0xfc 'ü' */ - 0xcc, /* XX XX */ - 0x00, /* */ - 0xcc, /* XX XX */ - 0xcc, /* XX XX */ - 0xcc, /* XX XX */ - 0xcc, /* XX XX */ - 0x76, /* XXX XX */ - 0x00, /* */ - - /* 253 0xfd 'ý' */ - 0x0c, /* XX */ - 0x10, /* X */ - 0xc6, /* XX XX */ - 0xc6, /* XX XX */ - 0xc6, /* XX XX */ - 0x7e, /* XXXXXX */ - 0x06, /* XX */ - 0xfc, /* XXXXXX */ - - /* 254 0xfe 'þ' */ - 0x70, /* XXX */ - 0x60, /* XX */ - 0x78, /* XXXXX */ - 0x64, /* XX XX */ - 0x78, /* XXXXX */ - 0x60, /* XX */ - 0x78, /* XXX */ - 0x00, /* */ - - /* 255 0xff 'ÿ' */ - 0xc6, /* XX XX */ - 0x00, /* */ - 0xc6, /* XX XX */ - 0xc6, /* XX XX */ - 0xc6, /* XX XX */ - 0x7e, /* XXXXXX */ - 0x06, /* XX */ - 0xfc, /* XXXXXX */ - -}; - - diff --git a/archive-sources/blockads/readme.txt b/archive-sources/blockads/readme.txt deleted file mode 100644 index 3c3601a..0000000 --- a/archive-sources/blockads/readme.txt +++ /dev/null @@ -1,68 +0,0 @@ -Werbe-Zapper Plugin für DBox 2 Version 0.78 - -Das Plugin kann gestartet werden, wenn auf einem Sender Werbung läuft. Anschließend kann auf einen anderen -Sender gezappt werden. Bei den von dem Socket-Server der "TC Unterhaltungselektronik-AG" unterstützten -Sendern wird nun bei Änderung des Werbestatus eines Senders ein Datenpaket mit der Info für alle Sender -vom Server an die Box geschickt. Ist die Werbung des Senders, von welchem weggeschaltet wurde, wird auto- -matisch auf diesen Sender zurückgeschaltet Bei nicht unterstützten Sendern, wenn auf einem unterstützten -Kanal keine Werbung gemeldet wird oder ohne Internetanbindung wird zunächst ein Menü eingeblendet, in -welchem die Zeit bis zum Zurückzappen zwischen 1 und 10 Minuten ausgewählt werden kann. Die Aktivierung -des Plugins wird im LCD-Display durch ein blinkendes "WZ" bei Internetabfrage beziehungsweise die Anzeige -der Restzeit in Minutem und Sekunden bis zum Zurückzappen bei nichtunterstützten Sendern oder ohne Inter- -netverbindung angezeigt. -Erster Aufruf des Plugins aktiviert es. Bei Programmen vom Werbeserver und mit Internet wird nachgeschaut, -ob wirklich gerade Werbung läuft. Wenn nicht, wird die Zeitabfrage für den Zap-Timer aktiviert, wenn der -Parameter "ZapAlways=" auf "1" steht. Ist er "0", wird das Plugin mit der Meldung, daß auf diesem Sender -gerade keine Werbung gemeldet wird, beendet. Bei nicht unterstützten Programmen oder ohne Internet wird -automatisch nach der ausgewählten RezapTime zurückgeschaltet. Ein erneuter Aufruf des Plugins während es -läuft, deaktiviert es -Thanx to Marxx (for Idea), Mailman (for 1. zap_timer-Plugin, UMP), cAsTeR (Boxcracker) - -Dateiorte ergeben sich aus den Verzeichnisnamen. 00_blockads.so, blockad und blockads brauchen Rechte 755 -Bei SqashFS-Images können die .so und .cfg auch nach /var/tuxbox/plugins/ gelegt werden. - -blockads.conf: - -RezapTime=07 // Position in der Zeitliste für Defaulteintrag in der angezeigten - Auswahlliste für die zeitgesteuerte Rückschaltung bei Kanälen, die - nicht auf dem Werbeserver unterstützt werden oder ohne Internet - -TimeX=nn // Eintrag Nummer X in der Zeitliste X=1..0 - nn=Zeit in Minuten bis zum Zurückschalten - -Internet=DSL // DSL, ISDN oder ANALOG, alles andere bedeutet "kein Internet" - -ZapAlways=1 // auch zappen, wenn bei unterstützten Sendern gerade keine Werbung - gemeldet wird - -Debounce=15 // Zeit in Sekunden, die der Werbeserber für einen Kanal mindestens - "keine Werbung" melden muß, ehe zurückgeschaltet wird - -Programm=ARD,Das Erste // Programm=Name des Programms auf dem Server,Name des Programms in - der Neutrino-Kanalliste - -ZapChanX=Das Erste // Programmname aus der Neutrino-Kanalliste, auf welchen bei Ver- - wendung der augewählten Rezap-Zeit bei nicht unterstützen Kanälen - oder nicht vorhandener Internetanbindung bei Pluginstart selbst- - ständig umgeschaltet werden soll. "X" entpricht dabei den Ziffern - "9" bis "0", entsprechend der ausgwählten Rezap-Zeit. 1 min="1" ... - 10 min="0". Fehlt der Eintrag bei der gewählten Rezap-Zeit, wird - nicht automatisch weggeschaltet - -KeepVolume=1 // stellt beim Zurückzappen bei Werbungsende automatisch die Lautstärke - und den Mutestatus des Senders vor dem Wegzappen wieder her - -Während der Werbezapper läuft, erzeugt er ein Statusfile /tmp/blockads.sts , welches von anderen Program- -men für eine Statusanzeige verwendet werden kann. In der ersten Ziele des Files steht der Kanalname, von -welchem wegen Werbung weggeschaltet wurde, in Klartext, in der zweiten Zeile bei Verwendung des Zaptimers -die Zeit bis zum Zurückzappen im Format "m:ss". Wird der Werbeserver abgefragt, steht in dieser Zeile "Auto". - -Der im Archiv enthaltene Ordner "Konfiguration über FlexMenü" enthält alle nötigen Dateien für die -Konfiguration von blockads mittels des "Flexiblen Menü-Plugins". Die Orte der Dateien werden durch -die Ordnerstruktur bereits vorgegeben. Das Script "wzqops" benötigt die Rechte 755. Die Datei -"in shellexec.conf einfuegen" wird, wie der Name bereits sagt, in eine bestehende Konfigurations- -Datei des FlexMenüs eingefügt. Wer den Editor "input" noch nicht im Image hat, kopiert bitte den -im Archiv enthaltenen mit den Rechten 755 nach /var/bin/. - -Grüße vom New-Tuxwetter-Team -Hilfe und Infos gibt's unter: http://www.dbox2-tuning.net/forum/viewforum.php?f=27&start=0 diff --git a/archive-sources/blockads/start.c b/archive-sources/blockads/start.c deleted file mode 100644 index 9144488..0000000 --- a/archive-sources/blockads/start.c +++ /dev/null @@ -1,53 +0,0 @@ -/* - * $Id: start.c,v 1.1 2010/03/03 20:47:03 rhabarber1848 Exp $ - * - * blockads - d-box2 linux project - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - * -*/ - -#include -#include -#include -#include -#include -#define SCRIPT "blockads" - -void plugin_exec() -{ - int ret, pid, status; - pid=fork(); - if (pid == -1) { - fprintf(stderr, "[%s.so] fork\n", SCRIPT); - return; - } else - if (pid == 0) { - fprintf(stderr, "[%s.so] forked, executing %s\n", SCRIPT, SCRIPT); - for (ret=3 ; ret < 255; ret++) - close (ret); - ret = system(SCRIPT); - if (ret) - fprintf(stderr, "[%s.so] script return code: %d (%m)\n", SCRIPT, ret); - else - fprintf(stderr, "[%s.so] script return code: %d\n", SCRIPT, ret); - _exit(ret); - } - fprintf(stderr, "[%s.so] parent, waiting for child with pid %d...\n", SCRIPT, pid); - waitpid(pid, &status, 0); - fprintf(stderr, "[%s.so] parent, waitpid() returned..\n", SCRIPT); - if (WIFEXITED(status)) - fprintf(stderr, "[%s.so] child returned with status %d\n", SCRIPT, WEXITSTATUS(status)); -} diff --git a/archive-sources/blockads/text.c b/archive-sources/blockads/text.c deleted file mode 100644 index 60bae83..0000000 --- a/archive-sources/blockads/text.c +++ /dev/null @@ -1,230 +0,0 @@ -/* - * $Id: text.c,v 1.0 2010/04/25 18:00:00 Exp $ - * - * blockads - d-box2 linux project - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - * -*/ - -#include "text.h" -#include "gfx.h" -#include "io.h" - -/****************************************************************************** - * MyFaceRequester - ******************************************************************************/ - -FT_Error MyFaceRequester(FTC_FaceID face_id, FT_Library library, FT_Pointer request_data, FT_Face *aface) -{ - FT_Error result; - - result = FT_New_Face(library, face_id, 0, aface); - - if(!result) printf("\n", (char*)face_id); - else printf("\n", (char*)face_id); - - return result; -} - -int RenderChar(FT_ULong currentchar, int sx, int sy, int ex, int color) -{ - unsigned char pix[4]={bl[color],gn[color],rd[color],tr[color]}; - int row, pitch, bit, x = 0, y = 0; - FT_UInt glyphindex; - FT_Vector kerning; - FT_Error error; - - currentchar=currentchar & 0xFF; - - //load char - - if(!(glyphindex = FT_Get_Char_Index(face, (int)currentchar))) - { - //printf("Blockads \n", (int)currentchar, error); - return 0; - } - - // no kerning used - /* - if(use_kerning) - { - FT_Get_Kerning(face, prev_glyphindex, glyphindex, ft_kerning_default, &kerning); - - prev_glyphindex = glyphindex; - kerning.x >>= 6; -} -else - */ - kerning.x = 0; - -//render char - -if(color != -1) /* don't render char, return charwidth only */ -{ - if(sx + sbit->xadvance >= ex) return -1; /* limit to maxwidth */ - - for(row = 0; row < sbit->height; row++) - { - for(pitch = 0; pitch < sbit->pitch; pitch++) - { - for(bit = 7; bit >= 0; bit--) - { - if(pitch*8 + 7-bit >= sbit->width) break; /* render needed bits only */ - - if((sbit->buffer[row * sbit->pitch + pitch]) & 1<left + kerning.x + x)*4 + fix_screeninfo.line_length*(starty + sy - sbit->top + y),pix,4); - - x++; - } - } - - x = 0; - y++; - } - -} - -//return charwidth - -return sbit->xadvance + kerning.x; -} - -/****************************************************************************** - * GetStringLen - ******************************************************************************/ - -int GetStringLen(unsigned char *string) -{ - int stringlen = 0; - - //reset kerning - - prev_glyphindex = 0; - - //calc len - - while(*string != '\0') - { - stringlen += RenderChar(*string, -1, -1, -1, -1); - string++; - } - - return stringlen; -} - -/****************************************************************************** - * RenderString - ******************************************************************************/ - -void RenderString(char *string, int sx, int sy, int maxwidth, int layout, int size, int color) -{ - int stringlen, ex, charwidth; - char rstr[256], *rptr=rstr; - - //set size - - if(strstr(string,"N/A")!=NULL) - { - sprintf(rstr,"---"); - } - else - { - strcpy(rstr,string); - } - - switch (size) - { -#ifdef FT_NEW_CACHE_API - case SMALL: desc.width = desc.height = 24; break; - case MED: desc.width = desc.height = 32; break; - case BIG: desc.width = desc.height = 40; break; - default: desc.width = desc.height = size; break; -#else - case SMALL: desc.font.pix_width = desc.font.pix_height = 24; break; - case MED: desc.font.pix_width = desc.font.pix_height = 32; break; - case BIG: desc.font.pix_width = desc.font.pix_height = 40; break; - default : desc.font.pix_width = desc.font.pix_height = size; break; -#endif - - - } - - //set alignment - - if(layout != LEFT) - { - stringlen = GetStringLen(rstr); - - switch(layout) - { - case CENTER: if(stringlen < maxwidth) sx += (maxwidth - stringlen)/2; - break; - - case RIGHT: if(stringlen < maxwidth) sx += maxwidth - stringlen; - } - } - - //reset kerning - - prev_glyphindex = 0; - - //render string - - ex = sx + maxwidth; - - while(*rptr != '\0') - { - if((charwidth = RenderChar(*rptr, sx, sy, ex, color)) == -1) return; /* string > maxwidth */ - - sx += charwidth; - rptr++; - } -} - -/****************************************************************************** - * ShowMessage - ******************************************************************************/ - -void ShowMessage(char *message, int wait) -{ - //layout - - RenderBox(105, 178, 514, 327, FILL, CMC); - RenderBox(105, 178, 514, 327, GRID, CMCS); - RenderBox(105, 220, 514, 327, GRID, CMCS); - - //message - - RenderString("Blockads Info", 107, 213, 406, CENTER, BIG, CMHT); - - RenderString(message, 107, 265, 406, CENTER, MED, CMCT); - - if(wait) - { - RenderBox(285, 286, 334, 310, FILL, CMCS); - RenderString("OK", 287, 305, 46, CENTER, SMALL, CMCT); - } - memcpy(lfb, lbb, fix_screeninfo.line_length*var_screeninfo.yres); - - while(wait && (GetRCCode() != RC_OK)); -} - diff --git a/archive-sources/blockads/text.h b/archive-sources/blockads/text.h deleted file mode 100644 index a9332b7..0000000 --- a/archive-sources/blockads/text.h +++ /dev/null @@ -1,33 +0,0 @@ -/* - * $Id: text.h,v 1.0 2010/04/25 18:00:00 Exp $ - * - * blockads - d-box2 linux project - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - * -*/ - -#ifndef __TEXT_H__ - -#define __TEXT_H__ - -#include "blockads.h" - -FT_Error MyFaceRequester(FTC_FaceID face_id, FT_Library library, FT_Pointer request_data, FT_Face *aface); -void RenderString(char *string, int sx, int sy, int maxwidth, int layout, int size, int color); -void ShowMessage(char *message, int wait); -int GetStringLen(unsigned char *string); - -#endif diff --git a/archive-sources/blockads/wzops b/archive-sources/blockads/wzops deleted file mode 100755 index c8b4afa..0000000 --- a/archive-sources/blockads/wzops +++ /dev/null @@ -1,106 +0,0 @@ -#!/bin/sh -#################################################################################### -#### Blockads -#### Werbezapper mit Internetanbindung -#### -#### Bugreport und Anregungen an SnowHead@keywelt-board.com -#### oder im Board: http://www.keywelt-board.com/index.php?showforum=33 -#### Das New-Tuxwetter-Team: SnowHead, Worschter, Zapt, Sanguiniker -#################################################################################### -# icqops BY MailMan/SnowHead - powered by Keywelt-Board -# http://www.keywelt-board.com/ -# -# VERSION -# 1.68 2007/03/28 Final Release - -# DECLARE USER VARS **************************************** -BLOCKADCFG="/var/tuxbox/config/blockads.conf" - - pth="/bin/input" - if [ ! -e $pth ]; then - pth="/var/bin/input" - if [ ! -e $pth ]; then - /bin/wget -Y off -O /dev/null http://localhost/control/message?nmsg=Eingabeprogramm%20input%20ist%20nicht%20installiert.%0APlugin%20kann%20nicht%20ausgef%C3%BChrt%20werden. - exit 0 - fi - fi - - case "$1" in - reztime) - echo "aendere Rezap Time" - if grep -q "^RezapTime=.*" $BLOCKADCFG; then - sed -e "s/^RezapTime=.*/RezapTime=$2/g" $BLOCKADCFG > /tmp/blockads.conf - fi - ;; - - rezentry) - echo "aendere Rezap Eintrag $2" - def=`grep "^Time$2=" "$BLOCKADCFG"` - if [ `expr length $def` -gt 0 ]; then - def=`expr substr $def 7 2` - else - def=0 - fi - res=`$pth t="Rezap-Zeit" d="$def" l='## Minuten'` - if [ -z $res ]; then - exit 1 - fi - - if grep -q "^Time$2=.*" $BLOCKADCFG; then - sed -e "s/^Time$2=.*/Time$2=$res/g" $BLOCKADCFG > /tmp/blockads.conf - fi - ;; - - iconnect) - echo "aendere Internetverbindung" - if [ -z "$2" ]; then - sed -e "s/^Internet=.*/Internet=/g" $BLOCKADCFG > /tmp/blockads.conf - else - sed -e "s/^Internet=.*/Internet=$2/g" $BLOCKADCFG > /tmp/blockads.conf - fi - ;; - - zap) - echo "aendere ZapAlways" - if grep -q "^ZapAlways=.*" $BLOCKADCFG; then - sed -e "s/^ZapAlways=.*/ZapAlways=$2/g" $BLOCKADCFG > /tmp/blockads.conf - else - echo ZapAlways=$2 >> $BLOCKADCFG - fi - ;; - - debounce) - echo "aendere Debounce Time" - def=`grep "^Debounce=" "$BLOCKADCFG"` - if [ `expr length "$def"` -gt 0 ]; then - def=`expr substr $def 10 2` - else - def=15 - fi - res=`$pth t="Server-Entprell-Zeit" d="$def" l='## Sekunden'` - if [ -z $res ]; then - exit 1 - fi - if grep -q "^Debounce=.*" $BLOCKADCFG; then - sed -e "s/^Debounce=.*/Debounce=$res/g" $BLOCKADCFG > /tmp/blockads.conf - else - echo Debounce=$res >> $BLOCKADCFG - fi - ;; - - vol) - echo "aendere KeepVolume" - if grep -q "^KeepVolume=.*" $BLOCKADCFG; then - sed -e "s/^KeepVolume=.*/KeepVolume=$2/g" $BLOCKADCFG > /tmp/blockads.conf - else - echo KeepVolume=$2 >> $BLOCKADCFG - fi - ;; - - esac - if [ -e /tmp/blockads.conf ]; then - mv /tmp/blockads.conf $BLOCKADCFG - rm -f /tmp/blockads.conf - fi - - exit 1 \ No newline at end of file diff --git a/archive-sources/getrc/getrc.c b/archive-sources/getrc/getrc.c deleted file mode 100644 index 1b4e152..0000000 --- a/archive-sources/getrc/getrc.c +++ /dev/null @@ -1,38 +0,0 @@ -#include -#include -#include -//#include -//#include "getrc.h" -#include "io.h" - -int main (int argc, char **argv) -{ -int rv='X',i; -char *key=NULL; -int tmo=0; - InitRC(); - for(i=1; i -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "io.h" - -#define RC_DEVICE "/dev/input/nevis_ir" - -struct input_event ev; -static unsigned short rccode=-1; -static int rc; - -int InitRC(void) -{ - rc = open(RC_DEVICE, O_RDONLY); - if(rc == -1) - { - perror("getrc "); - exit(1); - } - fcntl(rc, F_SETFL, O_NONBLOCK); - return 1; -} - -int CloseRC(void) -{ - close(rc); - return 1; -} - -int RCKeyPressed(void) -{ - if(read(rc, &ev, sizeof(ev)) == sizeof(ev)) - { - if(ev.code) - { - rccode=ev.code; - return 1; - } - } - rccode = -1; - return 0; -} - -int Translate(int code) -{ - int rv=-1; - - switch(code) - { - case KEY_0: - case KEY_1: - case KEY_2: - case KEY_3: - case KEY_4: - case KEY_5: - case KEY_6: - case KEY_7: - case KEY_8: - case KEY_9: rv = 0x29+code; - break; - - case KEY_UP: rv = 'C'; break; - case KEY_DOWN: rv = 'D'; break; - case KEY_LEFT: rv = 'B'; break; - case KEY_RIGHT: rv = 'A'; break; - case KEY_OK: rv = 'E'; break; - case KEY_RED: rv = 'J'; break; - case KEY_GREEN: rv = 'H'; break; - case KEY_YELLOW: rv = 'I'; break; - case KEY_BLUE: rv = 'K'; break; - case KEY_VOLUMEUP: rv = 'L'; break; - case KEY_VOLUMEDOWN: rv = 'M'; break; - case KEY_MUTE: rv = 'F'; break; - case KEY_HELP: rv = 'N'; break; - case KEY_SETUP: rv = 'O'; break; - case KEY_HOME: rv = 'P'; break; - case KEY_POWER: rv = 'G'; break; - - case KEY_PAGEUP: rv = 'Q'; break; - case KEY_PAGEDOWN: rv = 'R'; break; - case KEY_TVR: rv = 'S'; break; - case KEY_TTX: rv = 'T'; break; - case KEY_COOL: rv = 'U'; break; - case KEY_FAV: rv = 'V'; break; - case KEY_EPG: rv = 'W'; break; - case KEY_VF: rv = 'Y'; break; - case KEY_SAT: rv = 'Z'; break; - case KEY_SKIPP: rv = 'a'; break; - case KEY_SKIPM: rv = 'b'; break; - case KEY_TS: rv = 'c'; break; - case KEY_AUDIO: rv = 'd'; break; - case KEY_REW: rv = 'e'; break; - case KEY_FWD: rv = 'f'; break; - case KEY_HOLD: rv = 'g'; break; - case KEY_REC: rv = 'h'; break; - case KEY_STOP: rv = 'i'; break; - case KEY_PLAY: rv = 'j'; break; - - default: rccode = -1; - } - - return rv; - -} - -int GetRCCode(char *key, int timeout) -{ -int tmo=timeout; - - timeout>>=1; - - if(key) - { - while(Translate(rccode)!=(int)(*key)) - { - RCKeyPressed(); - usleep(10000L); - if(tmo &&((timeout-=10)<=0)) - { - return 'X'; - } - } - } - else - { - while(!RCKeyPressed()) - { - usleep(10000L); - if(tmo &&((timeout-=10)<=0)) - { - return 'X'; - } - } - } - return Translate(rccode); -} - diff --git a/archive-sources/getrc/io.h b/archive-sources/getrc/io.h deleted file mode 100644 index 79f61f6..0000000 --- a/archive-sources/getrc/io.h +++ /dev/null @@ -1,69 +0,0 @@ -#ifndef __IO_H__ - -#define __IO_H__ - -#define RC_DEVICE "/dev/input/nevis_ir" - -// rc codes - -#undef KEY_0 -#undef KEY_EPG -#undef KEY_SAT -#undef KEY_STOP -#undef KEY_PLAY - -#define KEY_0 1 -#define KEY_1 2 -#define KEY_2 3 -#define KEY_3 4 -#define KEY_4 5 -#define KEY_5 6 -#define KEY_6 7 -#define KEY_7 8 -#define KEY_8 9 -#define KEY_9 10 -#define KEY_BACKSPACE 14 -#define KEY_UP 103 -#define KEY_LEFT 105 -#define KEY_RIGHT 106 -#define KEY_DOWN 108 -#define KEY_MUTE 113 -#define KEY_VOLUMEDOWN 114 -#define KEY_VOLUMEUP 115 -#define KEY_POWER 116 -#define KEY_HELP 138 -#define KEY_HOME 102 -#define KEY_SETUP 141 -#define KEY_PAGEUP 104 -#define KEY_PAGEDOWN 109 -#define KEY_OK 0x160 /* in patched input.h */ -#define KEY_RED 0x18e /* in patched input.h */ -#define KEY_GREEN 0x18f /* in patched input.h */ -#define KEY_YELLOW 0x190 /* in patched input.h */ -#define KEY_BLUE 0x191 /* in patched input.h */ - -#define KEY_TVR 0x179 -#define KEY_TTX 0x184 -#define KEY_COOL 0x1A1 -#define KEY_FAV 0x16C -#define KEY_EPG 0x16D -#define KEY_VF 0x175 - -#define KEY_SAT 0x17D -#define KEY_SKIPP 0x197 -#define KEY_SKIPM 0x19C -#define KEY_TS 0x167 -#define KEY_AUDIO 0x188 -#define KEY_REW 0x0A8 -#define KEY_FWD 0x09F -#define KEY_HOLD 0x077 -#define KEY_REC 0x0A7 -#define KEY_STOP 0x080 -#define KEY_PLAY 0x0CF - -int InitRC(void); -int CloseRC(void); -int RCKeyPressed(void); -int GetRCCode(char *key, int timeout); - -#endif diff --git a/archive-sources/input/gfx.c b/archive-sources/input/gfx.c deleted file mode 100644 index 23c826b..0000000 --- a/archive-sources/input/gfx.c +++ /dev/null @@ -1,128 +0,0 @@ -#include "input.h" - -char circle[] = -{ - 0,0,0,0,0,1,1,0,0,0,0,0, - 0,0,0,1,1,1,1,1,1,0,0,0, - 0,0,1,1,1,1,1,1,1,1,0,0, - 0,1,1,1,1,1,1,1,1,1,1,0, - 0,1,1,1,1,1,1,1,1,1,1,0, - 1,1,1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1,1,1, - 0,1,1,1,1,1,1,1,1,1,1,0, - 0,1,1,1,1,1,1,1,1,1,1,0, - 0,0,1,1,1,1,1,1,1,1,0,0, - 0,0,0,1,1,1,1,1,1,0,0,0, - 0,0,0,0,0,1,1,0,0,0,0,0 -}; - -void RenderBox(int sx, int sy, int ex, int ey, int rad, int col) -{ - int F,R=rad,ssx=startx+sx,ssy=starty+sy,dxx=ex-sx,dyy=ey-sy,rx,ry,wx,wy,count; - - unsigned char *pos=(lbb+(ssx<<2)+fix_screeninfo.line_length*ssy); - unsigned char *pos0, *pos1, *pos2, *pos3, *i; - unsigned char pix[4]={bl[col],gn[col],rd[col],tr[col]}; - - if (dxx<0) - { - printf("[input] RenderBox called with dx < 0 (%d)\n", dxx); - dxx=0; - } - - if(R) - { - if(--dyy<=0) - { - dyy=1; - } - - if(R==1 || R>(dxx/2) || R>(dyy/2)) - { - R=dxx/10; - F=dyy/10; - if(R>F) - { - if(R>(dyy/3)) - { - R=dyy/3; - } - } - else - { - R=F; - if(R>(dxx/3)) - { - R=dxx/3; - } - } - } - ssx=0; - ssy=R; - F=1-R; - - rx=R-ssx; - ry=R-ssy; - - pos0=pos+((dyy-ry)*fix_screeninfo.line_length); - pos1=pos+(ry*fix_screeninfo.line_length); - pos2=pos+(rx*fix_screeninfo.line_length); - pos3=pos+((dyy-rx)*fix_screeninfo.line_length); - while (ssx <= ssy) - { - rx=R-ssx; - ry=R-ssy; - wx=rx<<1; - wy=ry<<1; - - for(i=pos0+(rx<<2); i -#include -#include -#include -#include "input.h" -#include "text.h" -#include "io.h" -#include "gfx.h" -#include "inputd.h" - -#define NCF_FILE "/var/tuxbox/config/neutrino.conf" -#define BUFSIZE 1024 -#define I_VERSION 1.08 - -//#define FONT "/usr/share/fonts/md_khmurabi_10.ttf" -#define FONT2 "/share/fonts/pakenham.ttf" -// if font is not in usual place, we look here: -#define FONT "/share/fonts/neutrino.ttf" - -// CMCST, CMCS, CMCT, CMC, CMCIT, CMCI, CMHT, CMH -// WHITE, BLUE0, TRANSP, CMS, ORANGE, GREEN, YELLOW, RED - -unsigned char bl[] = { 0x00, 0x00, 0xFF, 0x80, 0xFF, 0x80, 0x00, 0x80, - 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00}; -unsigned char gn[] = { 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xC0, 0x00, - 0xFF, 0x80, 0x00, 0x80, 0xC0, 0xFF, 0xFF, 0x00}; -unsigned char rd[] = { 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, - 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0xFF}; -unsigned char tr[] = { 0xFF, 0xFF, 0xFF, 0xA0, 0xFF, 0xA0, 0xFF, 0xFF, - 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}; - -void TrimString(char *strg); - -// OSD stuff -static char menucoltxt[][25]={"Content_Selected_Text","Content_Selected","Content_Text","Content","Content_inactive_Text","Content_inactive","Head_Text","Head"}; -static char spres[][5]={"","_crt","_lcd"}; - -char *buffer=NULL; - -//static void ShowInfo(void); - -// Misc -char NOMEM[]="input \n"; -char TMP_FILE[]="/tmp/input.tmp"; -unsigned char *lfb = 0, *lbb = 0, *obb = 0; -unsigned char nstr[512]="",rstr[512]=""; -unsigned char *trstr; -unsigned char rc,sc[8]={'a','o','u','A','O','U','z','d'}, tc[8]={0xE4,0xF6,0xFC,0xC4,0xD6,0xDC,0xDF,0xB0}; -int radius=10; - -static void quit_signal(int sig) -{ - put_instance(get_instance()-1); - printf("input Version %.2f killed\n",I_VERSION); - exit(1); -} - -int Read_Neutrino_Cfg(char *entry) -{ -FILE *nfh; -char tstr [512], *cfptr=NULL; -int rv=-1; - - if((nfh=fopen(NCF_FILE,"r"))!=NULL) - { - tstr[0]=0; - - while((!feof(nfh)) && ((strstr(tstr,entry)==NULL) || ((cfptr=strchr(tstr,'='))==NULL))) - { - fgets(tstr,500,nfh); - } - if(!feof(nfh) && cfptr) - { - ++cfptr; - if(sscanf(cfptr,"%d",&rv)!=1) - { - if(strstr(cfptr,"true")!=NULL) - { - rv=1; - } - else - { - if(strstr(cfptr,"false")!=NULL) - { - rv=0; - } - else - { - rv=-1; - } - } - } -// printf("%s\n%s=%s -> %d\n",tstr,entry,cfptr,rv); - } - fclose(nfh); - } - return rv; -} - -void TrimString(char *strg) -{ -char *pt1=strg, *pt2=strg; - - while(*pt2 && *pt2<=' ') - { - ++pt2; - } - if(pt1 != pt2) - { - do - { - *pt1=*pt2; - ++pt1; - ++pt2; - } - while(*pt2); - *pt1=0; - } - while(strlen(strg) && strg[strlen(strg)-1]<=' ') - { - strg[strlen(strg)-1]=0; - } -} - -int Transform_Msg(char *msg) -{ -int found=0,i; -char *sptr=msg, *tptr=msg; - - while(*sptr) - { - if(*sptr!='~') - { - *tptr=*sptr; - } - else - { - rc=*(sptr+1); - found=0; - for(i=0; i\n",aptr); - return 0; - break; - - case 2: - printf("input \n\n",aptr); - ShowUsage(); - return 0; - break; - } - } - if(!format) - { - printf("input \n"); - return 0; - } - if(!title) - { - title=ttl; - } - - if((buffer=calloc(BUFSIZE+1, sizeof(char)))==NULL) - { - printf(NOMEM); - return 0; - } - - spr=Read_Neutrino_Cfg("screen_preset")+1; - sprintf(buffer,"screen_StartX%s",spres[spr]); - if((sx=Read_Neutrino_Cfg(buffer))<0) - sx=100; - - sprintf(buffer,"screen_EndX%s",spres[spr]); - if((ex=Read_Neutrino_Cfg(buffer))<0) - ex=1180; - - sprintf(buffer,"screen_StartY%s",spres[spr]); - if((sy=Read_Neutrino_Cfg(buffer))<0) - sy=100; - - sprintf(buffer,"screen_EndY%s",spres[spr]); - if((ey=Read_Neutrino_Cfg(buffer))<0) - ey=620; - - for(index=CMCST; index<=CMH; index++) - { - sprintf(rstr,"menu_%s_alpha",menucoltxt[index]); - if((tv=Read_Neutrino_Cfg(rstr))>=0) - tr[index]=255-(float)tv*2.55; - - sprintf(rstr,"menu_%s_blue",menucoltxt[index]); - if((tv=Read_Neutrino_Cfg(rstr))>=0) - bl[index]=(float)tv*2.55; - - sprintf(rstr,"menu_%s_green",menucoltxt[index]); - if((tv=Read_Neutrino_Cfg(rstr))>=0) - gn[index]=(float)tv*2.55; - - sprintf(rstr,"menu_%s_red",menucoltxt[index]); - if((tv=Read_Neutrino_Cfg(rstr))>=0) - rd[index]=(float)tv*2.55; - } - - if(Read_Neutrino_Cfg("rounded_corners")>0) - radius=10; - else - radius=0; - - fb = open(FB_DEVICE, O_RDWR); - if(fb == -1) - { - perror("input "); - exit(1); - } - - InitRC(); - - if((trstr=malloc(BUFSIZE))==NULL) - { - printf(NOMEM); - return -1; - } - - //init framebuffer - - if(ioctl(fb, FBIOGET_FSCREENINFO, &fix_screeninfo) == -1) - { - perror("input \n"); - return -1; - } - if(ioctl(fb, FBIOGET_VSCREENINFO, &var_screeninfo) == -1) - { - perror("input \n"); - return -1; - } - if(!(lfb = (unsigned char*)mmap(0, fix_screeninfo.smem_len, PROT_READ | PROT_WRITE, MAP_SHARED, fb, 0))) - { - perror("input \n"); - return -1; - } - - //init fontlibrary - - if((error = FT_Init_FreeType(&library))) - { - printf("input ", error); - munmap(lfb, fix_screeninfo.smem_len); - return -1; - } - - if((error = FTC_Manager_New(library, 1, 2, 0, &MyFaceRequester, NULL, &manager))) - { - printf("input \n", error); - FT_Done_FreeType(library); - munmap(lfb, fix_screeninfo.smem_len); - return -1; - } - - if((error = FTC_SBitCache_New(manager, &cache))) - { - printf("input \n", error); - FTC_Manager_Done(manager); - FT_Done_FreeType(library); - munmap(lfb, fix_screeninfo.smem_len); - return -1; - } - - if((error = FTC_Manager_LookupFace(manager, FONT, &face))) - { - if((error = FTC_Manager_LookupFace(manager, FONT2, &face))) - { - printf("input \n", error); - FTC_Manager_Done(manager); - FT_Done_FreeType(library); - munmap(lfb, fix_screeninfo.smem_len); - return 2; - } - else - desc.face_id = FONT2; - } - else - desc.face_id = FONT; - - use_kerning = FT_HAS_KERNING(face); - - desc.flags = FT_LOAD_MONOCHROME; - - //init backbuffer - - if(!(lbb = malloc(fix_screeninfo.line_length*var_screeninfo.yres))) - { - perror("input \n"); - FTC_Manager_Done(manager); - FT_Done_FreeType(library); - munmap(lfb, fix_screeninfo.smem_len); - return -1; - } - if(!(obb = malloc(fix_screeninfo.line_length*var_screeninfo.yres))) - { - perror("input \n"); - FTC_Manager_Done(manager); - FT_Done_FreeType(library); - free(lbb); - munmap(lfb, fix_screeninfo.smem_len); - return 0; - } - - memcpy(lbb, lfb, fix_screeninfo.line_length*var_screeninfo.yres); - memcpy(obb, lfb, fix_screeninfo.line_length*var_screeninfo.yres); - - startx = sx /*+ (((ex-sx) - 620)/2)*/; - starty = sy /* + (((ey-sy) - 505)/2)*/; - - - - signal(SIGINT, quit_signal); - signal(SIGTERM, quit_signal); - signal(SIGQUIT, quit_signal); - - //main loop - put_instance(instance=get_instance()+1); - printf("%s\n",inputd(format, title, defstr, keys, frame, mask, bhelp, cols, tmo, debounce)); - put_instance(get_instance()-1); - - //cleanup - - // clear Display -// memset(lbb, 0, var_screeninfo.xres*var_screeninfo.yres); -// memcpy(lfb, lbb, var_screeninfo.xres*var_screeninfo.yres); - - memcpy(lfb, obb, fix_screeninfo.line_length*var_screeninfo.yres); - - free(buffer); - - FTC_Manager_Done(manager); - FT_Done_FreeType(library); - - free(lbb); - free(obb); - munmap(lfb, fix_screeninfo.smem_len); - - close(fb); - CloseRC(); - - - return 1; -} - diff --git a/archive-sources/input/input.h b/archive-sources/input/input.h deleted file mode 100644 index d53dcc0..0000000 --- a/archive-sources/input/input.h +++ /dev/null @@ -1,125 +0,0 @@ -#ifndef __INPUT_H__ - -#define __INPUT_H__ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include FT_FREETYPE_H -#include FT_CACHE_H -#include FT_CACHE_SMALL_BITMAPS_H - -//freetype stuff - -enum {LEFT, CENTER, RIGHT}; -enum {SMALL, MED, BIG}; - -FT_Error error; -FT_Library library; -FTC_Manager manager; -FTC_SBitCache cache; -FTC_SBit sbit; -#if FREETYPE_MAJOR == 2 && FREETYPE_MINOR == 0 -FTC_Image_Desc desc; -#else -FTC_ImageTypeRec desc; -#endif -FT_Face face; -FT_UInt prev_glyphindex; -FT_Bool use_kerning; - -// rc codes - -#undef KEY_EPG -#undef KEY_SAT -#undef KEY_STOP -#undef KEY_PLAY - -#define KEY_1 2 -#define KEY_2 3 -#define KEY_3 4 -#define KEY_4 5 -#define KEY_5 6 -#define KEY_6 7 -#define KEY_7 8 -#define KEY_8 9 -#define KEY_9 10 -#define KEY_BACKSPACE 14 -#define KEY_UP 103 -#define KEY_LEFT 105 -#define KEY_RIGHT 106 -#define KEY_DOWN 108 -#define KEY_MUTE 113 -#define KEY_VOLUMEDOWN 114 -#define KEY_VOLUMEUP 115 -#define KEY_POWER 116 -#define KEY_HELP 138 -#define KEY_HOME 102 -#define KEY_EXIT 174 -#define KEY_SETUP 141 -#define KEY_PAGEUP 104 -#define KEY_PAGEDOWN 109 -#define KEY_OK 0x160 -#define KEY_RED 0x18e -#define KEY_GREEN 0x18f -#define KEY_YELLOW 0x190 -#define KEY_BLUE 0x191 - -#define KEY_TVR 0x179 -#define KEY_TTX 0x184 -#define KEY_COOL 0x1A1 -#define KEY_FAV 0x16C -#define KEY_EPG 0x16D -#define KEY_VF 0x175 - -#define KEY_SAT 0x17D -#define KEY_SKIPP 0x197 -#define KEY_SKIPM 0x19C -#define KEY_TS 0x167 -#define KEY_AUDIO 0x188 -#define KEY_REW 0x0A8 -#define KEY_FWD 0x09F -#define KEY_HOLD 0x077 -#define KEY_REC 0x0A7 -#define KEY_STOP 0x080 -#define KEY_PLAY 0x0CF - -//devs - -int fb; - -//framebuffer stuff - -enum {FILL, GRID}; - -enum {CMCST, CMCS, CMCT, CMC, CMCIT, CMCI, CMHT, CMH, WHITE, BLUE1, GTRANSP, CMS, ORANGE, GREEN, YELLOW, RED}; -#define TRANSP 0 - -extern unsigned char *lfb, *lbb, *obb; -extern unsigned char rd[], gn[], bl[], tr[]; - -struct fb_fix_screeninfo fix_screeninfo; -struct fb_var_screeninfo var_screeninfo; - -int startx, starty, sx, ex, sy, ey; -extern unsigned char sc[8], tc[8]; -extern char *butmsg[3]; -extern int buttons,selection; - -#define FB_DEVICE "/dev/fb/0" - -#define BUFSIZE 1024 - -#endif - diff --git a/archive-sources/input/inputd.c b/archive-sources/input/inputd.c deleted file mode 100644 index 5a5524a..0000000 --- a/archive-sources/input/inputd.c +++ /dev/null @@ -1,623 +0,0 @@ -#include -#include -#include -#include "input.h" -#include "text.h" -#include "io.h" -#include "gfx.h" - -#define xbrd 25 -#define ybrd 25 -#define exsz 23 -#define eysz 38 -#define bxsz 60 -#define bysz 60 -#define hsz 50 -#define tys 30 -#define NUM '#' -#define ANUM '@' -#define HEX '^' -#define ndelay 3 - -char rstr[512],tstr[512], *format, *estr; -int epos=-1,cpos=0,kpos=0,cnt,first=1,hex=0; -char kcod[10][13]={"0 _.:,;$@()#","1-+*/", "2abcä", "3def", "4ghi", "5jkl", "6mnoö", "7pqrsß", "8tuvü", "9wxyz"}; -char hcod[10][13]={"0","1", "2abc", "3def", "4", "5", "6", "7", "8", "9"}; -unsigned rc; -extern int radius; -char INST_FILE[]="/tmp/rc.locked"; -int instance=0; - -int get_instance(void) -{ -FILE *fh; -int rval=0; - - if((fh=fopen(INST_FILE,"r"))!=NULL) - { - rval=fgetc(fh); - fclose(fh); - } - return rval; -} - -void put_instance(int pval) -{ -FILE *fh; - - if(pval) - { - if((fh=fopen(INST_FILE,"w"))!=NULL) - { - fputc(pval,fh); - fclose(fh); - } - } - else - { - remove(INST_FILE); - } -} - -int IsAlpha(char ch) -{ - char uml[]="AÖÜaöü"; - return (((ch>='A')&&(ch<='Z')) || ((ch>='a')&&(ch<='z')) || strchr(uml,ch)); -} - -int IsNum(char ch) -{ - return ((ch>='0')&&(ch<='9')); -} - -int IsInput(char ch) -{ - - if((ch==NUM) || (ch==ANUM)) - { - hex=0; - return 1; - } - if (ch==HEX) - { - hex=1; - return 1; - } - return 0; -} - -void FindCode(char ch) -{ - - if(!hex) - { - for(cpos=0; cpos<10; cpos++) - { - for(kpos=0; kpos=cnt) - { - epos=0; - } - } - while(!IsInput(format[epos])); - FindCode(estr[epos]); - first=1; -} - -void PrevPos(void) -{ - do - { - epos--; - if(epos<0) - { - epos=cnt-1; - } - } - while(!IsInput(format[epos])); - FindCode(estr[epos]); - first=1; -} - -void SetCode(int code) -{ - if(format[epos]==NUM) - { - hex=0; - cpos=code; - kpos=0; - estr[epos]=kcod[cpos][kpos]; - NextPos(); - } - else - { - if(format[epos]==HEX) - { - hex=1; - if(strlen(hcod[code])>1) - { - if(!first) - { - if(cpos==code) - { - if(++kpos>=strlen(hcod[cpos])) - { - kpos=0; - } - } - else - { - NextPos(); - cpos=code; - kpos=0; - first=0; - } - estr[epos]=hcod[cpos][kpos]; - } - else - { - cpos=code; - kpos=0; - estr[epos]=hcod[cpos][kpos]; - first=0; - } - } - else - { - cpos=code; - kpos=0; - estr[epos]=hcod[cpos][kpos]; - NextPos(); - } - } - else - { - hex=0; - if(!first) - { - if(cpos==code) - { - if(++kpos>=strlen(kcod[cpos])) - { - kpos=0; - } - } - else - { - NextPos(); - cpos=code; - kpos=1; - first=0; - } - estr[epos]=kcod[cpos][kpos]; - } - else - { - cpos=code; - kpos=1; - estr[epos]=kcod[cpos][kpos]; - first=0; - } - } - } -} - -int ReTransform_Msg(char *msg) -{ -int found=0,i; -char *sptr=msg, *tptr=tstr; - - *tptr=0; - while(*sptr) - { - found=0; - for(i=0; i25) - { - cols=25; - } - if(cols<1) - { - cols=1; - } - format=form; - estr=strdup(form); - cnt=strlen(form); - - i=GetStringLen(title, BIG)+10; - j=((cnt>cols)?cols:cnt)*exsz; - if(j>i) - { - i=j; - } - if(keys) - { - j=3*bxsz; - if(j>i) - { - i=j; - } - } - wxw=i+2*xbrd; - - i=(((cnt-1)/cols)+1)*eysz; - if(keys) - { - i+=4*bysz; - } - wyw=((keys)?4:2)*ybrd+i; - - wxs=((ex-sx)-wxw)/2; - wys=(((ey-sy)-wyw)+hsz)/2; - exs=wxs+(wxw-((cnt>cols)?cols:cnt)*exsz)/2; - eys=wys+ybrd; - - *estr=0; - *rstr=0; - - j=0; - for(i=0; i=tmo) - { - i=KEY_EXIT; - } - } - if((((format[epos]!=NUM) && (format[epos]!=HEX)) || ((format[epos]==HEX)&&(strlen(hcod[cpos])>1))) && ((t2-t1)>ndelay) && last_key>=0) - { - act_key=i=-2; - b_key=-3; - NextPos(); - } - } - act_key=i; - - switch(act_key) - { - case KEY_0: - SetCode(0); - break; - - case KEY_1: - SetCode(1); - break; - - case KEY_2: - SetCode(2); - break; - - case KEY_3: - SetCode(3); - break; - - case KEY_4: - SetCode(4); - break; - - case KEY_5: - SetCode(5); - break; - - case KEY_6: - SetCode(6); - break; - - case KEY_7: - SetCode(7); - break; - - case KEY_8: - SetCode(8); - break; - - case KEY_9: - SetCode(9); - break; - - case KEY_RIGHT: - NextPos(); - act_key=-2; - break; - - case KEY_LEFT: - PrevPos(); - act_key=-2; - break; - - case KEY_VOLUMEUP: - ipos=epos; - while(IsInput(format[ipos+1]) && ((ipos+1)epos) - { - estr[ipos]=estr[ipos-1]; - --ipos; - } - estr[epos]=' '; -// estr[epos]=((format[epos]=='#')||(format[epos]=='^'))?'0':' '; - act_key=-1; - break; - - case KEY_VOLUMEDOWN: - ipos=epos+1; - while(IsInput(format[ipos]) && (ipos=cols) - { - epos-=cols; - if(!IsInput(format[epos])) - { - NextPos(); - } - } - else - { - epos=cnt-1; - if(!IsInput(format[epos])) - { - PrevPos(); - } - } - act_key=-2; - break; - - case KEY_DOWN: - if(epos<=(cnt-cols)) - { - epos+=cols; - if(!IsInput(format[epos])) - { - NextPos(); - } - } - else - { - epos=0; - if(!IsInput(format[epos])) - { - NextPos(); - } - } - act_key=-2; - break; - - case KEY_EXIT: - free(estr); - estr=NULL; - *rstr=0; - run=0; - break; - - case KEY_RED: - if(IsAlpha(estr[epos])) - { - estr[epos]^=0x20; - } - act_key=-2; - break; - - case KEY_YELLOW: - epos=-1; - for(i=0; i -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "io.h" - -#define RC_DEVICE "/dev/input/nevis_ir" - -extern int instance; -struct input_event ev; -static unsigned short rccode=-1; -static int rc; - -int InitRC(void) -{ - rc = open(RC_DEVICE, O_RDONLY); - if(rc == -1) - { - perror("msgbox "); - exit(1); - } - fcntl(rc, F_SETFL, O_NONBLOCK | O_SYNC); - while(RCKeyPressed()); - return 1; -} - -int CloseRC(void) -{ - while(RCKeyPressed()); - close(rc); - return 1; -} - -int RCKeyPressed(void) -{ - if(read(rc, &ev, sizeof(ev)) == sizeof(ev)) - { - if(ev.value) - { - rccode=ev.code; - return 1; - } - } - rccode = -1; - return 0; -} - - -int GetRCCode(void) -{ - int rv; - - if(!RCKeyPressed() || (get_instance()>instance)) - { - return -1; - } - rv=rccode; - while(RCKeyPressed()); - - return rv; -} - - diff --git a/archive-sources/input/io.h b/archive-sources/input/io.h deleted file mode 100644 index d7914d4..0000000 --- a/archive-sources/input/io.h +++ /dev/null @@ -1,11 +0,0 @@ -#ifndef __IO_H__ - -#define __IO_H__ - -#define RC_DEVICE "/dev/input/nevis_ir" - -int InitRC(void); -int CloseRC(void); -int RCKeyPressed(void); - -#endif diff --git a/archive-sources/input/text.c b/archive-sources/input/text.c deleted file mode 100644 index 92d2473..0000000 --- a/archive-sources/input/text.c +++ /dev/null @@ -1,247 +0,0 @@ -#include "text.h" -#include "gfx.h" -#include "io.h" - -int FSIZE_BIG=32; -int FSIZE_MED=24; -int FSIZE_SMALL=20; -int TABULATOR=300; - -/****************************************************************************** - * MyFaceRequester - ******************************************************************************/ - -FT_Error MyFaceRequester(FTC_FaceID face_id, FT_Library library, FT_Pointer request_data, FT_Face *aface) -{ - FT_Error result; - - result = FT_New_Face(library, face_id, 0, aface); - - if(result) printf("msgbox \n", (char*)face_id); - - return result; -} - -/****************************************************************************** - * RenderChar - ******************************************************************************/ - -int RenderChar(FT_ULong currentchar, int sx, int sy, int ex, int color) -{ -// unsigned char pix[4]={oldcmap.red[col],oldcmap.green[col],oldcmap.blue[col],oldcmap.transp[col]}; -// unsigned char pix[4]={0x80,0x80,0x80,0x80}; - unsigned char pix[4]={bl[color],gn[color],rd[color],tr[color]}; - int row, pitch, bit, x = 0, y = 0; - FT_UInt glyphindex; - FT_Vector kerning; - FT_Error error; - - currentchar=currentchar & 0xFF; - - //load char - - if(!(glyphindex = FT_Get_Char_Index(face, (int)currentchar))) - { -// printf("msgbox \n", (int)currentchar, error); - return 0; - } - -// no kerning used -/* - if(use_kerning) - { - FT_Get_Kerning(face, prev_glyphindex, glyphindex, ft_kerning_default, &kerning); - - prev_glyphindex = glyphindex; - kerning.x >>= 6; - } - else -*/ - kerning.x = 0; - - //render char - - if(color != -1) /* don't render char, return charwidth only */ - { - if(sx + sbit->xadvance >= ex) return -1; /* limit to maxwidth */ - - for(row = 0; row < sbit->height; row++) - { - for(pitch = 0; pitch < sbit->pitch; pitch++) - { - for(bit = 7; bit >= 0; bit--) - { - if(pitch*8 + 7-bit >= sbit->width) break; /* render needed bits only */ - - if((sbit->buffer[row * sbit->pitch + pitch]) & 1<left + kerning.x + x)*4 + fix_screeninfo.line_length*(starty + sy - sbit->top + y),pix,4); - - x++; - } - } - - x = 0; - y++; - } - - } - - //return charwidth - - return sbit->xadvance + kerning.x; -} - -/****************************************************************************** - * GetStringLen - ******************************************************************************/ - -int GetStringLen(unsigned char *string, int size) -{ -int i, found; -int stringlen = 0; - - //reset kerning - - prev_glyphindex = 0; - - //calc len - - switch (size) - { - case SMALL: desc.width = desc.height = FSIZE_SMALL; break; - case MED: desc.width = desc.height = FSIZE_MED; break; - case BIG: desc.width = desc.height = FSIZE_BIG; break; - default: desc.width = desc.height = size; break; - } - - while(*string != '\0') - { - stringlen += RenderChar(*string, -1, -1, -1, -1); - string++; - } - - return stringlen; -} - - -void CatchTabs(char *text) -{ - int i; - char *tptr=text; - - while((tptr=strstr(tptr,"~T"))!=NULL) - { - *(++tptr)='t'; - for(i=0; i<3; i++) - { - if(*(++tptr)) - { - *tptr=' '; - } - } - } -} - -/****************************************************************************** - * RenderString - ******************************************************************************/ - -int RenderString(char *string, int sx, int sy, int maxwidth, int layout, int size, int color) -{ - int stringlen, ex, charwidth,i,found; - char rstr[BUFSIZE], *rptr=rstr, rc; - int varcolor=color; - - //set size - - strcpy(rstr,string); - - switch (size) - { - case SMALL: desc.width = desc.height = FSIZE_SMALL; break; - case MED: desc.width = desc.height = FSIZE_MED; break; - case BIG: desc.width = desc.height = FSIZE_BIG; break; - default: desc.width = desc.height = size; break; - } - TABULATOR=3*size; - //set alignment - - stringlen = GetStringLen(rstr, size); - - if(layout != LEFT) - { - switch(layout) - { - case CENTER: if(stringlen < maxwidth) sx += (maxwidth - stringlen)/2; - break; - - case RIGHT: if(stringlen < maxwidth) sx += maxwidth - stringlen; - } - } - - //reset kerning - - prev_glyphindex = 0; - - //render string - - ex = sx + maxwidth; - - while(*rptr != '\0') - { - if(*rptr=='~') - { - ++rptr; - rc=*rptr; - found=0; - for(i=0; i maxwidth */ - sx += charwidth; - } - else - { - switch(*rptr) - { - case 'R': varcolor=RED; break; - case 'G': varcolor=GREEN; break; - case 'Y': varcolor=YELLOW; break; - case 'B': varcolor=BLUE1; break; - case 'S': varcolor=color; break; - case 't': - sx=TABULATOR*((int)(sx/TABULATOR)+1); - break; - case 'T': - if(sscanf(rptr+1,"%3d",&i)==1) - { - rptr+=3; - sx=i; - } - break; - } - } - } - else - { - if((charwidth = RenderChar(*rptr, sx, sy, ex, varcolor)) == -1) return sx; /* string > maxwidth */ - sx += charwidth; - } - rptr++; - } - return stringlen; -} - diff --git a/archive-sources/input/text.h b/archive-sources/input/text.h deleted file mode 100644 index 6b1ded5..0000000 --- a/archive-sources/input/text.h +++ /dev/null @@ -1,16 +0,0 @@ -#ifndef __TEXT_H__ - -#define __TEXT_H__ - -#include "input.h" - -extern int FSIZE_BIG; -extern int FSIZE_MED; -extern int FSIZE_SMALL; - -FT_Error MyFaceRequester(FTC_FaceID face_id, FT_Library library, FT_Pointer request_data, FT_Face *aface); -int RenderString(char *string, int sx, int sy, int maxwidth, int layout, int size, int color); -int GetStringLen(unsigned char *string, int size); -void CatchTabs(char *text); - -#endif diff --git a/archive-sources/liga_nat/liga_nat b/archive-sources/liga_nat/liga_nat index 321a420..8d18c5a 100644 --- a/archive-sources/liga_nat/liga_nat +++ b/archive-sources/liga_nat/liga_nat @@ -1,13 +1,17 @@ #! /bin/sh # Liga-Ergebnisse und Tabellen in Messagebox anzeigen -# by PauleFoul mod by theobald123 thanx to Bazi98 -# Version: 2.3 Coolstream HD1 - +# by Bazi98 thanx to theobald123 +# Version: 2.50 Coolstream Neutrino HD +# F~ur Saison 2012/2013 Stand: 21.07.2012 +# Speicherort: /var/plugins chmod 755 +# ben~otigt shellexc und msgbox unter /bin/ chmod jeweils 755 +# Aufruf via Flex-Men~u +# ACTION=&Fu~zball Ergebnisse und Tabellen,var/plugins/liga_nat,Bitte warten. # ************************************************************************************* # * Funktion zur Anzeige der Ergebnisse * # *-----------------------------------------------------------------------------------* -# * Übergabeparameter 1: Anzeigedateiname * -# * Übergabeparameter 2: Fontgröße für Anzeige * +# * ~Ubergabeparameter 1: Anzeigedateiname * +# * ~Ubergabeparameter 2: Fontgr~o~ze f~ur Anzeige * # ************************************************************************************* Ergebnisse () @@ -42,7 +46,7 @@ Ergebnisse () wait=0 fi if [ -e /tmp/.msgbox_hidden ]; then #Messagebox ausgeblendet - if [ $copy -eq 0 ]; then #Alte Daten kopiert? + if [ $copy -eq 0 ]; then #Alte Daten kopiert? cp /tmp/testE.txt /tmp/anzeige_alt.txt echo Messagebox ausgeblendet copy=1 @@ -58,149 +62,94 @@ Ergebnisse () } # ************************************************************************************* -# * Funktion zum Erstellen der Tabelle für die erste oder zweite Liga * +# * Funktion zum Erstellen der Tabelle f~ur die 1., 2.Bundesliga und der 3. Liga * # ************************************************************************************* -Tabelle12 () +Tabelle () { rm /tmp/test*.txt; rm /tmp/tabelle.txt - wget -O /tmp/tabelle.txt $2 #Daten aus dem Internet einlesen - sed -n -e "65,202 p" /tmp/tabelle.txt > /tmp/test1.txt #Zeile 65 - 202 auslesen - sed -e 's/<[^>]*>//g' -e 's/ / /' /tmp/test1.txt > /tmp/test2.txt #HTML-Tags entfernen - sed -e '/^[^0-9a-zA-Z!-\/]*$/d' /tmp/test2.txt > /tmp/test3.txt #Leerzeilen entfernen + wget -O /tmp/tabelle.txt $2 #Daten aus dem Internet einlesen + sed -n -e "/>Platz/ p" /tmp/tabelle.txt > /tmp/test1.txt #Tabellendaten auslesen + sed -e 's/<[^>]*>//g' -e 's/ / /' -e 's/Platz/Pl /' /tmp/test1.txt > /tmp/test2.txt #HTML-Tags entfernen und Platz in Pl umwandeln + sed -e '/^[^0-9a-zA-Z!-\/]*$/d' -e 's/ü/ü/' -e 's/ö/ö/' -e 's/ß/ß/' /tmp/test2.txt > /tmp/test3.txt #Leerzeilen entfernen und Sonderzeichen behandeln #Daten und Ergebnisse auslesen - echo ~T0250Platz~T0305Verein~T0550Spiele~T0620Tore~T0710Punkte > /tmp/test4.txt - count=1; tab1=2; tab2=3; tab3=4; tab4=5; tab5=6; step=5 - while [ $count -le 18 ]; do - echo ~T0250`sed -n "$tab1"p /tmp/test3.txt`~T0300`sed -n "$tab2"p /tmp/test3.txt`~T0560`sed -n "$tab3"p /tmp/test3.txt`~T0610`sed -n "$tab4"p /tmp/test3.txt`~T0720`sed -n "$tab5"p /tmp/test3.txt` >> /tmp/test4.txt - count=`expr "$count" + 1`; tab1=`expr "$tab1" + $step`; tab2=`expr "$tab2" + $step`; tab3=`expr "$tab3" + $step`; tab4=`expr "$tab4" + $step`; tab5=`expr "$tab5" + $step` + count=1; tab1=1; tab2=2; tab3=3; tab4=4; tab5=5; tab6=6; tab7=7; tab8=8; tab9=9; step=9 + + while [ $count -le $3 ]; do + a1=`sed -n "$tab1"p /tmp/test3.txt`;a1=`echo $a1` + if [ $count -lt 11 -a $count -gt 1 ]; + then + a1=~T0260$a1 + else + a1=~T0250$a1 + fi + a2=`sed -n "$tab2"p /tmp/test3.txt`;a2=`echo $a2` + a3=`sed -n "$tab3"p /tmp/test3.txt`;a3=`echo $a3` + a4=`sed -n "$tab4"p /tmp/test3.txt`;a4=`echo $a4` + a5=`sed -n "$tab5"p /tmp/test3.txt`;a5=`echo $a5` + a6=`sed -n "$tab6"p /tmp/test3.txt`;a6=`echo $a6` + a7=`sed -n "$tab7"p /tmp/test3.txt`;a7=`echo $a7` + a8=`sed -n "$tab8"p /tmp/test3.txt`;a8=`echo $a8` + a9=`sed -n "$tab9"p /tmp/test3.txt`;a9=`echo $a9` +# echo ~T0250$a1~T0300$a2~T0550$a3~T0605$a4~T0650$a5~T0690$a6~T0730$a7~T0810$a8~T0890$a9 >> /tmp/test4.txt + echo $a1~T0300$a2~T0550$a3~T0605$a4~T0650$a5~T0690$a6~T0730$a7~T0810$a8~T0890$a9 >> /tmp/test4.txt + count=`expr "$count" + 1`; tab1=`expr "$tab1" + $step`; tab2=`expr "$tab2" + $step`; tab3=`expr "$tab3" + $step`; tab4=`expr "$tab4" + $step`; tab5=`expr "$tab5" + $step`; tab6=`expr "$tab6" + $step`; tab7=`expr "$tab7" + $step`; tab8=`expr "$tab8" + $step`; tab9=`expr "$tab9" + $step` done - msgbox title=" LIVE-Tabelle der $1. Bundesliga " size=22 timeout=600 popup=/tmp/test4.txt #Tabelle anzeigen + echo ~BQuelle: www.sportal.de~S >> /tmp/test4.txt + dos2unix /tmp/test4.txt + msgbox title="Tabelle der $1 " size=24 timeout=600 popup=/tmp/test4.txt #Tabelle anzeigen #TMP-Dateien loeschen rm /tmp/test*.txt; rm /tmp/tabelle.txt } # ************************************************************************************* -# * Funktion zum Erstellen der Ergebnisse für die erste oder zweite Liga * +# * Funktion zum Erstellen der Ergebnisse f~ur die erste,zweite u. dritte Liga * # *-----------------------------------------------------------------------------------* -# * Übergabeparameter 1: Internet-Adresse * +# * ~Ubergabeparameter 1: Internet-Adresse * # ************************************************************************************* -Liga12 () +Liga () { -rm /tmp/test*.txt; rm /tmp/tore.txt -ende=0 -while [ $ende -eq 0 ]; do - wget -O /tmp/tore.txt $1 #Daten aus dem Internet einlesen - sed -n -e "25,65 p" /tmp/tore.txt > /tmp/test1.txt #Zeile 25 - 65 auslesen - sed -e 's/<[^>]*>//g' /tmp/test1.txt > /tmp/test2.txt #HTML-Tags entfernen - sed -e '/^[^0-9a-zA-Z!-\/]*$/d' -e 's/ - /~T0460-~T0480/' /tmp/test2.txt > /tmp/testE.txt #Leerzeilen entfernen - Head=`sed -n 1p /tmp/testE.txt` #Ueberschrift aus Zeile 1 in TestE.txt auslesen - - #Spielpaarungen und Ergebnisse auslesen - rm /tmp/test3.txt - count=1; tab1=2; tab2=3; step=2; new1=0 - while [ $count -le 9 ]; do #9Zeilen schreiben - a1=`sed -n "$tab1"p /tmp/testE.txt` #Paarung - a2=`sed -n "$tab2"p /tmp/testE.txt` #Spielstand - a3=" " - if [ -e /tmp/anzeige_alt.txt ]; then #Wenn Datei "anzeige_alt.txt" vorhanden - b2=`sed -n "$tab2"p /tmp/anzeige_alt.txt` #Lese altes Ergebnis - if [ "$a2" != "$b2" ]; then #Wenn neu ungleich alt - a3=~T0820NEU! - new1=`expr "$new1" + 1` + rm /tmp/test*.txt; rm /tmp/tore.txt + ende=0 + while [ $ende -eq 0 ]; do + #Daten aus dem Internet einlesen + wget -O /tmp/tore.txt $2 + sed -n -e "/>S]*>//g' -e 's/ / /g' -e 's/2010//' -e 's/&/&/g' > /tmp/testE.txt #HTML-Tags entfernen; Sonderzeichen ersetzen + + #Ueberschrift Vorbereiten + Head="Ergebnisse der $1" + + #Spielpaarungen und Ergebnisse auslesen + rm /tmp/test2.txt #Ergebnisdatei l~oschen + count=1; tab1=8; tab2=15; tab3=19; step=22; new1=0 + while [ $count -le $3 ]; do #$3 Zeilen schreiben + a1=`sed -n "$tab1"p /tmp/testE.txt` #Heimmannschaft + a2=`sed -n "$tab2"p /tmp/testE.txt` #Gastmannschaft + a3=`sed -n "$tab3"p /tmp/testE.txt` #Spielstand + a4=" " + if [ -e /tmp/anzeige_alt.txt ]; then #Wenn Datei "anzeige_alt.txt" vorhanden + b3=`sed -n "$tab3"p /tmp/anzeige_alt.txt` #Lese altes Ergebnis + if [ "$a3" != "$b3" ]; then #Wenn neu ungleich alt + a4=~T0800NEU! + new1=`expr "$new1" + 1` + fi + else + a4=~T0800 fi - else - a3=~T0820 - fi - echo "~T0280$a1~T0670$a2$a3" >> /tmp/test3.txt #Ergebniszeile ausgeben - count=`expr "$count" + 1`; tab1=`expr "$tab1" + $step`; tab2=`expr "$tab2" + $step` - done - Ergebnisse /tmp/test3.txt 22 -done -rm /tmp/test*.txt; rm /tmp/tore.txt -} - -# ************************************************************************************* -# * Funktion zum erstellen der Tabelle für die 3. deutsche Fussball Liga * -# ************************************************************************************* - -Tabelle3 () -{ - rm /tmp/test*.txt; rm /tmp/tabelle.txt - wget -O /tmp/tabelle.txt $2 #Daten aus dem Internet einlesen - sed -e '1,21d' /tmp/tabelle.txt > /tmp/test1.txt #Zeile 1 - 21 entfernen - sed -e 's/<[^>]*>//g' -e 's/ / /' /tmp/test1.txt > /tmp/test2.txt #HTML-Tags entfernen - sed -e '/^[^0-9a-zA-Z!+-\/]*$/d' /tmp/test2.txt > /tmp/test3.txt #Leerzeilen entfernen - - echo ~T0250Platz~T0305Verein~T0550Spiele~T0620Diff.~T0710Punkte > /tmp/test4.txt - #Daten und Ergebnisse auslesen - count=0; tab1=1; tab2=2; tab3=3; tab4=4; tab5=5; step=5 - while [ $count -le 20 ]; do - echo ~T0250`sed -n "$tab1"p /tmp/test3.txt`~T0300`sed -n "$tab2"p /tmp/test3.txt`~T0560`sed -n "$tab3"p /tmp/test3.txt`~T0610`sed -n "$tab4"p /tmp/test3.txt`~T0720`sed -n "$tab5"p /tmp/test3.txt` >> /tmp/test4.txt - count=`expr "$count" + 1`; tab1=`expr "$tab1" + $step`; tab2=`expr "$tab2" + $step`; tab3=`expr "$tab3" + $step`; tab4=`expr "$tab4" + $step`; tab5=`expr "$tab5" + $step` - done - - #Daten ausgeben (Framebuffer) - msgbox title=" LIVE-Tabelle der $1. Liga " size=22 timeout=600 popup=/tmp/test4.txt - #TMP-Dateien loeschen - rm /tmp/test*.txt; rm /tmp/tabelle.txt + echo "~T0230 $a1~T0450- ~T0470 $a2~T0700 $a3$a4" >> /tmp/test2.txt #Ergebniszeile ausgeben + count=`expr "$count" + 1`; tab1=`expr "$tab1" + $step`; tab2=`expr "$tab2" + $step`; tab3=`expr "$tab3" + $step` + done + echo ~BQuelle: www.kicker.de~S >> /tmp/test2.txt + dos2unix /tmp/test2.txt + Ergebnisse /tmp/test2.txt 22 + done + rm /tmp/test*.txt; rm /tmp/tore.txt } -# ************************************************************************************* -# * Funktion zum Erstellen der Ergebnisse für die dritte Liga * -# *-----------------------------------------------------------------------------------* -# * Übergabeparameter 1: Internet-Adresse * -# ************************************************************************************* - -Liga3 () -{ -rm /tmp/test*.txt; rm /tmp/tore.txt -ende=0 -while [ $ende -eq 0 ]; do - wget -O /tmp/tore.txt $1 #Daten aus dem Internet einlesen - sed -e 's/<[^>]*>//g' -e 's/ / /g' -e 's/&/&/g' /tmp/tore.txt > /tmp/test1.txt #HTML-Tags entfernen; Sonderzeichen ersetzen - - #Anfangs- und Endezeile der Ergebnistabelle ermitteln und auslesen - Start=`sed -n -e "/^Begegnungen/ =" /tmp/test1.txt` - Start=`expr "$Start" + 20` - Stop=`expr "$Start" + 230` - sed -n -e "$Start,$Stop p" /tmp/test1.txt > /tmp/testE.txt - - #Ueberschrift auslesen - sed -n -e "/^3. Liga:/ p" /tmp/test1.txt > /tmp/head1.txt - Head=`cut -b 71-82 /tmp/head1.txt` - Head="$Head der 3. Liga" - rm /tmp/head1.txt - - #Spielpaarungen und Ergebnisse auslesen - rm /tmp/test2.txt #Ergebnisdatei löschen - count=1; tab1=5; tab2=12; tab3=16; step=23; new1=0 - while [ $count -le 10 ]; do #10 Zeilen schreiben - a1=`sed -n "$tab1"p /tmp/testE.txt` #Heimmannschaft - a2=`sed -n "$tab2"p /tmp/testE.txt` #Gastmannschaft - a3=`sed -n "$tab3"p /tmp/testE.txt` #Spielstand - a4=" " - if [ -e /tmp/anzeige_alt.txt ]; then #Wenn Datei "anzeige_alt.txt" vorhanden - b3=`sed -n "$tab3"p /tmp/anzeige_alt.txt` #Lese altes Ergebnis - if [ "$a3" != "$b3" ]; then #Wenn neu ungleich alt - a4=~T0800NEU! - new1=`expr "$new1" + 1` - fi - else - a4=~T0800 - fi - - echo "~T0230 $a1~T0450- ~T0470 $a2~T0700 $a3$a4" >> /tmp/test2.txt #Ergebniszeile ausgeben - count=`expr "$count" + 1`; tab1=`expr "$tab1" + $step`; tab2=`expr "$tab2" + $step`; tab3=`expr "$tab3" + $step` - done - Ergebnisse /tmp/test2.txt 22 -done -rm /tmp/test*.txt ; rm /tmp/tore.txt; -} # ************************************************************************************* # * Liga ausw~ahlen und Daten aus Internet in eine lokale Datei einlesen * @@ -216,36 +165,77 @@ while [ 1 -eq 1 ]; do wait=20 copy=0 aktu=1 #Bei 1 ist automatische Aktualisierung ein - msgbox title="Bundesliga Live-Ergebnisse" size=28 order=2 msg="~cBitte eine Liga ausw~ahlen!" select="1.Liga,Tabelle,2.Liga,Tabelle,3.Liga,Tabelle" default=$auswahl + msgbox title="Fussball - Ergebnisse" size=28 order=2 msg="~cBitte eine Liga ausw~ahlen!" select=" 1.Liga ,Tabelle, 2.Liga ,Tabelle,3.Liga ,Tabelle, RL Nord ,Tabelle, RL Nordost ,Tabelle, RL West ,Tabelle, RL S~udwest ,Tabelle, RL Bayern ,Tabelle" default=$auswahl auswahl=$? case $auswahl in 1) - Liga12 "http://linpop.zdf.de/sport/bl1/konferenz.htm" + Liga "1.Bundesliga" "http://www.kicker.de/news/fussball/1bundesliga/spieltag/1-bundesliga/2012-13/spieltag.html" "9" ;; 2) - Tabelle12 "1" "http://linpop.zdf.de/sport/bl1/konferenz.htm" + Tabelle "1.Bundesliga" "http://www.sportal.de/sportal/fussball/1bundesliga/tabelle.html" "19" ;; 3) - Liga12 "http://linpop.zdf.de/sport/bl2/konferenz.htm" + Liga "2.Bundesliga" "http://www.kicker.de/news/fussball/2bundesliga/spieltag/2-bundesliga/2012-13/spieltag.html" "9" ;; 4) - Tabelle12 "2" "http://linpop.zdf.de/sport/bl2/konferenz.htm" + Tabelle "2.Bundesliga" "http://www.sportal.de/sportal/fussball/2bundesliga/tabelle.html" "19" ;; 5) - Liga3 "http://www.kicker.de/news/fussball/3liga/spieltag/3-liga/2010-11/spieltag.html" + Liga "3.Liga" "http://www.kicker.de/news/fussball/3liga/spieltag/3-liga/2012-13/spieltag.html" "10" ;; 6) - Tabelle3 "3" "http://www.3-liga.com/tool_tabelle_light.php?" + Tabelle "3.Liga" "http://www.sportal.de/sportal/fussball/3liga/tabelle.html" "21" + ;; + + 7) + Liga "Regionalliga Nord" "http://www.kicker.de/news/fussball/regionalliga/rln/regionalliga-nord-2012/2012-13/spieltag.html" "9" + ;; + + 8) + Tabelle "Regionalliga Nord" "http://www.sportal.de/fussball/regionalliga-nord/tabelle/tabelle-saison-2012-2013.html" "19" + ;; + + 9) + Liga "Regionalliga Nordost" "http://www.kicker.de/news/fussball/regionalliga/rlno/regionalliga-nordost-2012/2012-13/spieltag.html" "8" + ;; + + 10) + Tabelle "Regionalliga Nordost" "http://www.sportal.de/fussball/regionalliga-nordost/tabelle/tabelle-saison-2012-2013.html" "17" ;; + 11) + Liga "Regionalliga West" "http://www.kicker.de/news/fussball/regionalliga/rlw/regionalliga-west-2012/2012-13/spieltag.html" "10" + ;; + + 12) + Tabelle "Regionalliga West" "http://www.sportal.de/fussball/regionalliga-west/tabelle/tabelle-saison-2012-2013.html" "21" + ;; + + 13) + Liga "Regionalliga S~udwest" "http://www.kicker.de/news/fussball/regionalliga/rlsw/regionalliga-suedwest-2012/2012-13/spieltag.html" "9" + ;; + + 14) + Tabelle "Regionalliga S~udwest" "http://www.sportal.de/fussball/regionalliga-suedwest/tabelle/tabelle-saison-2012-2013.html" "20" + ;; + + 15) + Liga "Regionalliga Bayern" "http://www.kicker.de/news/fussball/regionalliga/rlby/regionalliga-bayern-2012/2012-13/spieltag.html" "10" + ;; + + 16) + Tabelle "Regionalliga Bayern" "http://www.sportal.de/fussball/regionalliga-bayern/tabelle/tabelle-saison-2012-2013.html" "21" + ;; + + *) - rm /tmp/test*.txt; rm /tmp/tore.txt; + rm /tmp/test*.txt; rm /tmp/tore.txt; rm /tmp/tabelle.txt; exit ;; diff --git a/archive-sources/logomask/gfx.c b/archive-sources/logomask/gfx.c deleted file mode 100644 index 7b66830..0000000 --- a/archive-sources/logomask/gfx.c +++ /dev/null @@ -1,60 +0,0 @@ -#include "logomask.h" -#include "gfx.h" - -gpixel *make_color(int col, gpixel *pix) -{ - pix->cpixel.bl=bl[col]; - pix->cpixel.gn=gn[col]; - pix->cpixel.rd=rd[col]; - pix->cpixel.tr=tr[col]; - return pix; -}; - -void RenderBox(int sx, int sy, int ex, int ey, int mode, gpixel *pix) -{ - int F,ssx=startx+sx,ssy=starty+sy,dxx=ex-sx,dyy=ey-sy,rx,ry,wx,wy,count; - - unsigned char *pos=(lbb+(ssx<<2)+fix_screeninfo.line_length*ssy); - unsigned char *pos0, *pos1, *pos2, *pos3, *i; - - if (dxx<0) - { - printf("[gfx.c] RenderBox called with dx < 0 (%d)\n", dxx); - dxx=0; - } - - if(mode==FILL) - { - for (count=0; count -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "io.h" - -#define RC_DEVICE "/dev/input/nevis_ir" - -extern int instance; -struct input_event ev; -static unsigned short rccode=-1; -static int rc; - -int InitRC(void) -{ - rc = open(RC_DEVICE, O_RDONLY); - if(rc == -1) - { - perror("msgbox "); - exit(1); - } - fcntl(rc, F_SETFL, O_NONBLOCK | O_SYNC); - while(RCKeyPressed()); - return 1; -} - -int CloseRC(void) -{ - while(RCKeyPressed()); - close(rc); - return 1; -} - -int RCKeyPressed(void) -{ - if(read(rc, &ev, sizeof(ev)) == sizeof(ev)) - { - if(ev.value) - { - rccode=ev.code; - return 1; - } - } - rccode = -1; - return 0; -} - - -int GetRCCode(void) -{ - int rv; - - if(!RCKeyPressed()) - { - return -1; - } - rv=rccode; -// while(RCKeyPressed()); - - return rv; -} - - diff --git a/archive-sources/logomask/io.h b/archive-sources/logomask/io.h deleted file mode 100644 index d7914d4..0000000 --- a/archive-sources/logomask/io.h +++ /dev/null @@ -1,11 +0,0 @@ -#ifndef __IO_H__ - -#define __IO_H__ - -#define RC_DEVICE "/dev/input/nevis_ir" - -int InitRC(void); -int CloseRC(void); -int RCKeyPressed(void); - -#endif diff --git a/archive-sources/logomask/lmask b/archive-sources/logomask/lmask deleted file mode 100755 index e5d948d..0000000 --- a/archive-sources/logomask/lmask +++ /dev/null @@ -1,8 +0,0 @@ -#!/bin/sh - -if pidof logomask > /dev/null; then - touch /tmp/.logomask_kill -else - logomask & -fi -exit 0 diff --git a/archive-sources/logomask/logomask.c b/archive-sources/logomask/logomask.c deleted file mode 100644 index 7f1102c..0000000 --- a/archive-sources/logomask/logomask.c +++ /dev/null @@ -1,345 +0,0 @@ -#include -#include -#include "logomask.h" -#include "gfx.h" - -extern int FSIZE_BIG; -extern int FSIZE_MED; -extern int FSIZE_SMALL; - -#define NCF_FILE "/var/tuxbox/config/neutrino.conf" -#define CFG_FILE "/var/tuxbox/config/logomask.conf" - -#define CL_VERSION "1.00" -#define MAX_MASK 16 - -// TRANSP, BLACK, RED, GREEN, YELLOW, BLUE, MAGENTA, TURQUOISE, -// WHITE, GRAY, LRED, LGREEN, LYELLOW,LBLUE, LMAGENTA,LTURQUOISE -unsigned char - rd[]={ 0x00, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, - 0xFF, 0x80, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00 - }, - gn[]={ 0x00, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, 0x80, - 0xFF, 0x80, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF - }, - bl[]={ 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, - 0xFF, 0x80, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF - }, - tr[]={ 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF - }; - -unsigned char *lfb = 0, *lbb = 0; -char tstr[BUFSIZE]; -int xpos=0,ypos=0,sdat=0,big=0,secs=1; -gpixel lpix; - -void TrimString(char *strg) -{ -char *pt1=strg, *pt2=strg; - - while(*pt2 && *pt2<=' ') - { - ++pt2; - } - if(pt1 != pt2) - { - do - { - *pt1=*pt2; - ++pt1; - ++pt2; - } - while(*pt2); - *pt1=0; - } - while(strlen(strg) && strg[strlen(strg)-1]<=' ') - { - strg[strlen(strg)-1]=0; - } -} -int Read_Neutrino_Cfg(char *entry) -{ -FILE *nfh; -char *cfptr=NULL; -int rv=-1; - - if((nfh=fopen(NCF_FILE,"r"))!=NULL) - { - tstr[0]=0; - - while((!feof(nfh)) && ((strstr(tstr,entry)==NULL) || ((cfptr=strchr(tstr,'='))==NULL))) - { - fgets(tstr,500,nfh); - } - if(!feof(nfh) && cfptr) - { - ++cfptr; - if(sscanf(cfptr,"%d",&rv)!=1) - { - rv=-1; - } -// printf("%s\n%s=%s -> %d\n",tstr,entry,cfptr,rv); - } - fclose(nfh); - } - return rv; -} - -/****************************************************************************** - * logomask Main - ******************************************************************************/ - -int main (int argc, char **argv) -{ - int i,j,m,found,loop=1,mask=0,test=0,pmode=0,lmode=0,mchanged=1,cchanged=2,mwait; - unsigned char lastchan[20]="", actchan[20]=""/*,channel[128]=""*/; - int xp[MAX_MASK][8],yp[MAX_MASK][8],xw[MAX_MASK][8],yw[MAX_MASK][8],valid[MAX_MASK],xxp,xxw,yyp,yyw,nmsk=0; - gpixel tp, cmc, mc[MAX_MASK]; - FILE *fh; - char *cpt1,*cpt2; - - if(argc==2 && strstr(argv[1],"test")!=NULL) - { - test=1; - } - printf("logomask Version %s\n",CL_VERSION); - if((mwait=Read_Neutrino_Cfg("timing.infobar"))<0) - mwait=6; - -// mwait-=1; - - fb = open(FB_DEVICE, O_RDWR); - - if(ioctl(fb, FBIOGET_FSCREENINFO, &fix_screeninfo) == -1) - { - printf("logomask \n"); - return -1; - } - if(ioctl(fb, FBIOGET_VSCREENINFO, &var_screeninfo) == -1) - { - printf("logomask \n"); - return -1; - } - - if(!(lfb = (unsigned char*)mmap(0, fix_screeninfo.smem_len, PROT_READ | PROT_WRITE, MAP_SHARED, fb, 0))) - { - printf("logomask \n"); - return -1; - } - - //init backbuffer - - if(!(lbb = malloc(fix_screeninfo.line_length*var_screeninfo.yres))) - { - printf("logomask \n"); - munmap(lfb, fix_screeninfo.smem_len); - return -1; - } - - memset(lbb, 0, fix_screeninfo.line_length*var_screeninfo.yres); -// memset(mc, BLACK, sizeof(mc)); - startx = sx; - starty = sy; - - - // if problem with config file return from plugin - - while(loop) - { - sleep(1); - mchanged=0; - system("pzapit -var > /tmp/logomaskset.stat"); - if((fh=fopen("/tmp/logomaskset.stat","r"))!=NULL) - { - if(fgets(tstr,500,fh)) - { - TrimString(tstr); - if(strlen(tstr)) - { - lmode=pmode; - if(sscanf(tstr+strlen(tstr)-1,"%d",&i)!=1) - { - pmode=0; - } - else - { - mchanged=(pmode!=i); - pmode=i; - } - } - } - fclose(fh); - } - - system("pzapit -gi > /tmp/logomask.chan"); - if((fh=fopen("/tmp/logomask.chan","r"))!=NULL) - { - if(fgets(tstr, BUFSIZE, fh)) - { - TrimString(tstr); - if((cpt1=strchr(tstr,' '))!=NULL) - *cpt1=0; - } - fclose(fh); - if(strlen(tstr)) - { - strcpy(actchan,tstr); - cchanged=(cchanged==2)?3:((strcmp(actchan,lastchan)?1:0)); - if(mchanged || cchanged) - { - found=0; - if(cchanged) - { - if(cchanged==1) - { - sleep(mwait); - } - cchanged=1; - } - if(mask) - { - for(m=0; m5) - { - if(access("/tmp/.logomask_kill",0)!=-1) - { - loop=0; - } - } - } - } - - make_color(TRANSP, &cmc); - for(m=0; m -#include -#include -#include -#include -#include -#include -#include -#if HAVE_DVB_API_VERSION == 3 -#include -#endif -#include -#include -#include -#include - -// rc codes - -#undef KEY_EPG -#undef KEY_SAT -#undef KEY_STOP -#undef KEY_PLAY - -#define KEY_1 2 -#define KEY_2 3 -#define KEY_3 4 -#define KEY_4 5 -#define KEY_5 6 -#define KEY_6 7 -#define KEY_7 8 -#define KEY_8 9 -#define KEY_9 10 -#define KEY_BACKSPACE 14 -#define KEY_UP 103 -#define KEY_LEFT 105 -#define KEY_RIGHT 106 -#define KEY_DOWN 108 -#define KEY_MUTE 113 -#define KEY_VOLUMEDOWN 114 -#define KEY_VOLUMEUP 115 -#define KEY_POWER 116 -#define KEY_HELP 138 -#define KEY_HOME 102 -#define KEY_EXIT 174 -#define KEY_SETUP 141 -#define KEY_PAGEUP 104 -#define KEY_PAGEDOWN 109 -#define KEY_OK 0x160 -#define KEY_RED 0x18e -#define KEY_GREEN 0x18f -#define KEY_YELLOW 0x190 -#define KEY_BLUE 0x191 - -#define KEY_TVR 0x179 -#define KEY_TTX 0x184 -#define KEY_COOL 0x1A1 -#define KEY_FAV 0x16C -#define KEY_EPG 0x16D -#define KEY_VF 0x175 - -#define KEY_SAT 0x17D -#define KEY_SKIPP 0x197 -#define KEY_SKIPM 0x19C -#define KEY_TS 0x167 -#define KEY_AUDIO 0x188 -#define KEY_REW 0x0A8 -#define KEY_FWD 0x09F -#define KEY_HOLD 0x077 -#define KEY_REC 0x0A7 -#define KEY_STOP 0x080 -#define KEY_PLAY 0x0CF - -//devs -int fb, rc; - -//framebuffer stuff - -enum {FILL, GRID}; - -enum {TRANSP, BLACK, RED, GREEN, YELLOW, BLUE, MAGENTA, TURQUOISE, WHITE, GRAY, LRED, LGREEN, LYELLOW, LBLUE, LMAGENTA, LTURQUOISE}; - -extern unsigned char rd[], gn[], bl[], tr[]; -extern unsigned char *lfb, *lbb; - -struct fb_fix_screeninfo fix_screeninfo; -struct fb_var_screeninfo var_screeninfo; - -int startx, starty, sx, ex, sy, ey; -char online; - -#define FB_DEVICE "/dev/fb/0" - -#define BUFSIZE 4096 - -#endif diff --git a/archive-sources/logomask/logoset.c b/archive-sources/logomask/logoset.c deleted file mode 100644 index 6020082..0000000 --- a/archive-sources/logomask/logoset.c +++ /dev/null @@ -1,794 +0,0 @@ -#include -#include -#include "logoset.h" -#include "io.h" -#include "gfx.h" -#include "text.h" - -extern int FSIZE_BIG; -extern int FSIZE_MED; -extern int FSIZE_SMALL; - -#define NCF_FILE "/var/tuxbox/config/neutrino.conf" -#define CFG_FILE "/var/tuxbox/config/logomask.conf" -unsigned char FONT[64]= "/share/fonts/pakenham.ttf"; - -#define CL_VERSION "1.00" -#define MAX_MASK 16 - -// TRANSP, BLACK, RED, GREEN, YELLOW, BLUE, MAGENTA, TURQUOISE, -// WHITE, GRAY, LRED, LGREEN, LYELLOW,LBLUE, LMAGENTA,LTURQUOISE -unsigned char - rd[]={ 0x00, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, - 0xFF, 0x80, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00 - }, - gn[]={ 0x00, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, 0x80, - 0xFF, 0x80, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF - }, - bl[]={ 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, - 0xFF, 0x80, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF - }, - tr[]={ 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF - }; - - -unsigned char *lfb = 0, *lbb = 0; -char tstr[BUFSIZE]; -gpixel lpix; - - -void TrimString(char *strg) -{ -char *pt1=strg, *pt2=strg; - - while(*pt2 && *pt2<=' ') - { - ++pt2; - } - if(pt1 != pt2) - { - do - { - *pt1=*pt2; - ++pt1; - ++pt2; - } - while(*pt2); - *pt1=0; - } - while(strlen(strg) && strg[strlen(strg)-1]<=' ') - { - strg[strlen(strg)-1]=0; - } -} - -/****************************************************************************** - * logoset Main - ******************************************************************************/ - -int main (int argc, char **argv) -{ - int i,j,found=0,m,mask=1,kmode=1,pmode=0, lc=-1, changed=0, todo=1, help=1, help_changed=0, move=0; - unsigned char actchan[20]=""/*,channel[128]=""*/; - FILE *fh,*fh2; - char *cpt1,*cpt2; - gpixel mp, mc[MAX_MASK], tp; - int tsx=startx+450, tsy=starty+120, tdy=24, tsz=28, txw=500, tcol=TURQUOISE; - int xp[MAX_MASK][8],yp[MAX_MASK][8],xw[MAX_MASK][8],yw[MAX_MASK][8],valid[MAX_MASK],cmc[MAX_MASK],xxp,xxw,yyp,yyw,nmsk=0,amsk=0; - double xs=1.0, ys=1.0; - time_t t1,t2; - - for(j=0; j /tmp/logomaskset.stat"); - if((fh=fopen("/tmp/logomaskset.stat","r"))!=NULL) - { - if(fgets(tstr,500,fh)) - { - TrimString(tstr); - if(strlen(tstr)) - { - if(sscanf(tstr+strlen(tstr)-1,"%d",&pmode)!=1) - { - pmode=0; - } - } - } - } - - system("touch /tmp/.logomask_kill"); - - fb = open(FB_DEVICE, O_RDWR); - - if(ioctl(fb, FBIOGET_FSCREENINFO, &fix_screeninfo) == -1) - { - printf("logomask \n"); - return -1; - } - if(ioctl(fb, FBIOGET_VSCREENINFO, &var_screeninfo) == -1) - { - printf("logomask \n"); - return -1; - } - - if(!(lfb = (unsigned char*)mmap(0, fix_screeninfo.smem_len, PROT_READ | PROT_WRITE, MAP_SHARED, fb, 0))) - { - printf("logomask \n"); - return -1; - } - - //init fontlibrary - - if((error = FT_Init_FreeType(&library))) - { - printf("logomask ", error); - munmap(lfb, fix_screeninfo.smem_len); - return -1; - } - - if((error = FTC_Manager_New(library, 1, 2, 0, &MyFaceRequester, NULL, &manager))) - { - printf("logomask \n", error); - FT_Done_FreeType(library); - munmap(lfb, fix_screeninfo.smem_len); - return -1; - } - - if((error = FTC_SBitCache_New(manager, &cache))) - { - printf("logomask \n", error); - FTC_Manager_Done(manager); - FT_Done_FreeType(library); - munmap(lfb, fix_screeninfo.smem_len); - return -1; - } - - if((error = FTC_Manager_LookupFace(manager, FONT, &face))) - { - printf("logomask \n", error); - FTC_Manager_Done(manager); - FT_Done_FreeType(library); - munmap(lfb, fix_screeninfo.smem_len); - return -1; - } - - use_kerning = FT_HAS_KERNING(face); - - desc.face_id = FONT; - desc.flags = FT_LOAD_MONOCHROME; - - - InitRC(); - - //init backbuffer - - if(!(lbb = malloc(fix_screeninfo.line_length*var_screeninfo.yres))) - { - printf("logomask \n"); - munmap(lfb, fix_screeninfo.smem_len); - return -1; - } - - memset(lbb, 0, fix_screeninfo.line_length*var_screeninfo.yres); - - startx = sx; - starty = sy; - - system("pzapit -gi > /tmp/logomask.chan"); - if((fh=fopen("/tmp/logomask.chan","r"))!=NULL) - { - if(fgets(tstr, BUFSIZE, fh)) - { - TrimString(tstr); - if((cpt1=strchr(tstr,' '))!=NULL) - *cpt1=0; - } - fclose(fh); - if(strlen(tstr)) - { - strcpy(actchan,tstr); - } - - if((fh=fopen(CFG_FILE,"r"))!=NULL) - { - found=0; - while(fgets(tstr, BUFSIZE, fh) && !found) - { - TrimString(tstr); - if(strlen(tstr)) - { - if(strstr(tstr,actchan)!=NULL) - { - mask=1; - nmsk=0; - cpt2=strstr(tstr,",MC"); - if((cpt1=strchr(tstr,','))!=NULL) - { - while(cpt1) - { - valid[nmsk]=0; - if(cpt2 && sscanf(cpt2+1,"MC%8X",&mp.lpixel)==1) - { - cpt2=strchr(cpt2+1,','); - } - else - { - make_color(BLACK, &mp); - } - for(i=0; i<8 && cpt1; i++) - { - cpt1++; - if(sscanf(cpt1,"%d,%d,%d,%d",&xxp,&xxw,&yyp,&yyw)==4) - { - xp[nmsk][i]=xxp; - xw[nmsk][i]=xxw; - yp[nmsk][i]=yyp; - yw[nmsk][i]=yyw; - mc[nmsk].lpixel=mp.lpixel; - found=1; - valid[nmsk]=1; - } - for(j=0; j<4 && cpt1; j++) - { - cpt1=strchr(cpt1+1,','); - } - } - if(valid[nmsk]) - { - nmsk++; - } - } - } - } - } - } - fclose(fh); - } - } - - if(!nmsk) - { - nmsk=1; - valid[0]=1; - } - mask=nmsk; - for(m=0; m0) - { - changed=1; - xxp-=xs; - } - } - else - { - if(xxw>6) - { - changed=1; - xxw-=xs; - } - } - move=1; - break; - - case KEY_RIGHT: - if((xxp+xxw)<(fix_screeninfo.line_length-1)) - { - changed=1; - if(lc==KEY_RIGHT) - { - xs+=0.3; - } - else - { - xs=1.0; - } - if(kmode) - { - xxp+=xs; - } - else - { - xxw+=xs; - } - } - move=1; - break; - - case KEY_UP: - if(lc==KEY_UP) - { - ys+=0.2; - } - else - { - ys=1.0; - } - if(kmode) - { - if(yyp>0) - { - changed=1; - yyp-=ys; - } - } - else - { - if(yyw>6) - { - changed=1; - yyw-=ys; - } - } - move=1; - break; - - case KEY_DOWN: - if((yyp+yyw)<(var_screeninfo.yres-1)) - { - changed=1; - if(lc==KEY_DOWN) - { - ys+=0.2; - } - else - { - ys=1.0; - } - if(kmode) - { - yyp+=ys; - } - else - { - yyw+=ys; - } - } - move=1; - break; - - case KEY_RED: - changed=1; - RenderBox(xxp, yyp, xxp+xxw, yyp+yyw, FILL, make_color(TRANSP,&tp)); - for(i=0;i<=yyw;i++) - { - j=(yyp+i)*fix_screeninfo.line_length+(xxp<<2); - if(((j+(xxw<<2)))1) - { - m=amsk+1; - if(m>=MAX_MASK) - { - m=0; - } - while(!valid[m]) - { - if(++m>=MAX_MASK) - { - m=0; - } - } - RenderBox(xxp, yyp, xxp+xxw, yyp+yyw, FILL, &lpix); - amsk=m; - xxp=xp[amsk][pmode]; - xxw=xw[amsk][pmode]; - yyp=yp[amsk][pmode]; - yyw=yw[amsk][pmode]; - lpix.lpixel=mc[amsk].lpixel; - } - break; - - case KEY_PAGEDOWN: - if(nmsk>1) - { - m=amsk-1; - if(m<0) - { - m=MAX_MASK-1; - } - while(!valid[m]) - { - if(--m<0) - { - m=MAX_MASK; - } - } - RenderBox(xxp, yyp, xxp+xxw, yyp+yyw, FILL, &lpix); - amsk=m; - xxp=xp[amsk][pmode]; - xxw=xw[amsk][pmode]; - yyp=yp[amsk][pmode]; - yyw=yw[amsk][pmode]; - lpix.lpixel=mc[amsk].lpixel; - } - break; - - case KEY_YELLOW: - kmode=0; - break; - - case KEY_BLUE: - kmode=1; - break; - - case KEY_1: - if(nmsk) - { - if(mc[amsk].cpixel.rd < 0xF0) - mc[amsk].cpixel.rd+=0x10; - else - mc[amsk].cpixel.rd=0xFF; - changed=1; - } - break; - - case KEY_4: - if(nmsk) - { - mc[amsk].cpixel.rd=0x80; - changed=1; - } - break; - - case KEY_7: - if(nmsk) - { - if(mc[amsk].cpixel.rd > 0x0F) - mc[amsk].cpixel.rd-=0x10; - else - mc[amsk].cpixel.rd=0x00; - changed=1; - } - break; - - case KEY_2: - if(nmsk) - { - if(mc[amsk].cpixel.gn < 0xF0) - mc[amsk].cpixel.gn+=0x10; - else - mc[amsk].cpixel.gn=0xFF; - changed=1; - } - break; - - case KEY_5: - if(nmsk) - { - mc[amsk].cpixel.gn=0x80; - changed=1; - } - break; - - case KEY_8: - if(nmsk) - { - if(mc[amsk].cpixel.gn > 0x0F) - mc[amsk].cpixel.gn-=0x10; - else - mc[amsk].cpixel.gn=0x00; - changed=1; - } - break; - - case KEY_3: - if(nmsk) - { - if(mc[amsk].cpixel.bl < 0xF0) - mc[amsk].cpixel.bl+=0x10; - else - mc[amsk].cpixel.bl=0xFF; - changed=1; - } - break; - - case KEY_6: - if(nmsk) - { - mc[amsk].cpixel.bl=0x80; - changed=1; - } - break; - - case KEY_9: - if(nmsk) - { - if(mc[amsk].cpixel.bl > 0x0F) - mc[amsk].cpixel.bl-=0x10; - else - mc[amsk].cpixel.bl=0x00; - changed=1; - } - break; - - case KEY_MUTE: - if(nmsk) - { - if(++cmc[amsk]>LTURQUOISE) - cmc[amsk]=BLACK; - make_color(cmc[amsk], &mc[amsk]); - changed=1; - } - break; - - case KEY_HELP: - help_changed=1; - break; - } - lc=rc; - lpix.lpixel=mc[amsk].lpixel; - if(mask || todo==2) - { - RenderBox(xp[amsk][pmode], yp[amsk][pmode], xp[amsk][pmode]+xw[amsk][pmode], yp[amsk][pmode]+yw[amsk][pmode], FILL, make_color(TRANSP, &tp)); - for(i=0;i<=yw[amsk][pmode];i++) - { - j=(yp[amsk][pmode]+i)*fix_screeninfo.line_length+(xp[amsk][pmode]<<2); - if((j+(xw[amsk][pmode]<<2))1) - { - xs=1.0; - ys=1.0; - tsy=starty+120; - if(move) - { - RenderBox(xp[amsk][pmode], yp[amsk][pmode], xp[amsk][pmode]+xw[amsk][pmode], yp[amsk][pmode]+yw[amsk][pmode], FILL, &mc[amsk]); - RenderBox(xp[amsk][pmode], yp[amsk][pmode], xp[amsk][pmode]+xw[amsk][pmode], yp[amsk][pmode]+yw[amsk][pmode], GRID, make_color((kmode)?LBLUE:LYELLOW,&tp)); - } - move=0; - if(help_changed) - { - help^=1; - } - if(help) - { - RenderBox(tsx,tsy,tsx+txw,tsy+20*tdy,FILL,make_color(TRANSP, &tp)); - if(nmsk) - RenderBox(xp[amsk][pmode], yp[amsk][pmode], xp[amsk][pmode]+xw[amsk][pmode], yp[amsk][pmode]+yw[amsk][pmode], GRID, make_color((kmode)?LBLUE:LYELLOW, &tp)); - RenderString("Maskensteuerung", tsx, tsy+=tdy, txw, LEFT, tsz, tcol); - RenderString("Blau : Umschalten auf Positionseinstellung", tsx, tsy+=tdy, txw, LEFT, tsz, tcol); - RenderString("Gelb : Umschalten auf Größeneinstellung", tsx, tsy+=tdy, txw, LEFT, tsz, tcol); - RenderString("Grün : Maske hinzufügen", tsx, tsy+=tdy, txw, LEFT, tsz, tcol); - RenderString("Rot : Maske löschen", tsx, tsy+=tdy, txw, LEFT, tsz, tcol); - RenderString("PgUp : nächste Maske auswählen", tsx, tsy+=tdy, txw, LEFT, tsz, tcol); - RenderString("PgDn : vorherige Maske auswählen", tsx, tsy+=tdy, txw, LEFT, tsz, tcol); - RenderString("Maskenfarbe", tsx, tsy+=(2*tdy), txw, LEFT, tsz, tcol); - RenderString("1,4,7 : Farbton Rot erhöhen, auf Mitte setzen, verringern", tsx, tsy+=tdy, txw, LEFT, tsz, tcol); - RenderString("2,5,8 : Farbton Grün erhöhen, auf Mitte setzen, verringern", tsx, tsy+=tdy, txw, LEFT, tsz, tcol); - RenderString("3,6,9 : Farbton Blau erhöhen, auf Mitte setzen, verringern", tsx, tsy+=tdy, txw, LEFT, tsz, tcol); - RenderString("Mute : Maskenfarbe aus Vorgabe auswählen", tsx, tsy+=tdy, txw, LEFT, tsz, tcol); - RenderString("Allgemein", tsx, tsy+=(2*tdy), txw, LEFT, tsz, tcol); - RenderString("? : Hilfetext ein/ausschalten", tsx, tsy+=tdy, txw, LEFT, tsz, tcol); - RenderString("Home: Abbrechen", tsx, tsy+=tdy, txw, LEFT, tsz, tcol); - RenderString("OK : Speichern und Beenden", tsx, tsy+=tdy, txw, LEFT, tsz, tcol); - } - else - { - if(help_changed) - { - RenderBox(tsx, tsy, tsx+txw, tsy+20*tdy, FILL, make_color(TRANSP, &tp)); - if(nmsk) - RenderBox(xp[amsk][pmode], yp[amsk][pmode], xp[amsk][pmode]+xw[amsk][pmode], yp[amsk][pmode]+yw[amsk][pmode], GRID, make_color((kmode)?LBLUE:LYELLOW, &tp)); - } - } - help_changed=0; - memcpy(lfb, lbb, fix_screeninfo.line_length*var_screeninfo.yres); - } - } - if(rc==KEY_EXIT) - { - changed=0; - todo=0; - } - if(rc==KEY_OK && changed) - { - if((fh2=fopen("/tmp/logomask.conf","w"))!=NULL) - { - fh=fopen(CFG_FILE,"r"); - while(fh && fgets(tstr, BUFSIZE, fh)) - { - TrimString(tstr); - if(strlen(tstr)) - { - if(strstr(tstr,actchan)==NULL) - { - fprintf(fh2,"%s\n",tstr); - } - } - } - if(fh) - { - fclose(fh); - } - if(todo) - { - fprintf(fh2,"%s",actchan); - for(j=0; j -#include -#include -#include -#include -#include -#include -#include -#if HAVE_DVB_API_VERSION == 3 -#include -#endif -#include -#include -#include -#include - -#include -#include FT_FREETYPE_H -#include FT_CACHE_H -#include FT_CACHE_SMALL_BITMAPS_H - -// rc codes - -#undef KEY_EPG -#undef KEY_SAT -#undef KEY_STOP -#undef KEY_PLAY - -#define KEY_1 2 -#define KEY_2 3 -#define KEY_3 4 -#define KEY_4 5 -#define KEY_5 6 -#define KEY_6 7 -#define KEY_7 8 -#define KEY_8 9 -#define KEY_9 10 -#define KEY_BACKSPACE 14 -#define KEY_UP 103 -#define KEY_LEFT 105 -#define KEY_RIGHT 106 -#define KEY_DOWN 108 -#define KEY_MUTE 113 -#define KEY_VOLUMEDOWN 114 -#define KEY_VOLUMEUP 115 -#define KEY_POWER 116 -#define KEY_HELP 138 -#define KEY_HOME 102 -#define KEY_EXIT 174 -#define KEY_SETUP 141 -#define KEY_PAGEUP 104 -#define KEY_PAGEDOWN 109 -#define KEY_OK 0x160 -#define KEY_RED 0x18e -#define KEY_GREEN 0x18f -#define KEY_YELLOW 0x190 -#define KEY_BLUE 0x191 - -#define KEY_TVR 0x179 -#define KEY_TTX 0x184 -#define KEY_COOL 0x1A1 -#define KEY_FAV 0x16C -#define KEY_EPG 0x16D -#define KEY_VF 0x175 - -#define KEY_SAT 0x17D -#define KEY_SKIPP 0x197 -#define KEY_SKIPM 0x19C -#define KEY_TS 0x167 -#define KEY_AUDIO 0x188 -#define KEY_REW 0x0A8 -#define KEY_FWD 0x09F -#define KEY_HOLD 0x077 -#define KEY_REC 0x0A7 -#define KEY_STOP 0x080 -#define KEY_PLAY 0x0CF - -//freetype stuff - -extern unsigned char FONT[64]; - -enum {LEFT, CENTER, RIGHT}; -enum {SMALL, MED, BIG}; - -FT_Error error; -FT_Library library; -FTC_Manager manager; -FTC_SBitCache cache; -FTC_SBit sbit; -FTC_ImageTypeRec desc; -FT_Face face; -FT_UInt prev_glyphindex; -FT_Bool use_kerning; - -//devs -int fb, rc; - -//framebuffer stuff - -enum {FILL, GRID}; - -enum {TRANSP, BLACK, RED, GREEN, YELLOW, BLUE, MAGENTA, TURQUOISE, WHITE, GRAY, LRED, LGREEN, LYELLOW, LBLUE, LMAGENTA, LTURQUOISE}; - -extern unsigned char rd[], gn[], bl[], tr[]; -extern unsigned char *lfb, *lbb; - -extern int FSIZE_BIG; -extern int FSIZE_MED; -extern int FSIZE_SMALL; -extern int TABULATOR; - -struct fb_fix_screeninfo fix_screeninfo; -struct fb_var_screeninfo var_screeninfo; - -int startx, starty, sx, ex, sy, ey; -char online; - -#define FB_DEVICE "/dev/fb/0" - -#define BUFSIZE 4096 - -#endif diff --git a/archive-sources/logomask/starter_logomask.c b/archive-sources/logomask/starter_logomask.c deleted file mode 100644 index d608a5f..0000000 --- a/archive-sources/logomask/starter_logomask.c +++ /dev/null @@ -1,54 +0,0 @@ -/* - * $Id$ - * - * shellexec - d-box2 linux project - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - * -*/ - -#include -#include -#include -#include -#include -#define SCRIPT "logomask" - -int main(void) -{ - int ret, pid, status; - pid=fork(); - if (pid == -1) { - fprintf(stderr, "[%s.so] fork\n", SCRIPT); - return; - } else - if (pid == 0) { - fprintf(stderr, "[%s.so] forked, executing %s\n", SCRIPT, SCRIPT); - for (ret=3 ; ret < 255; ret++) - close (ret); - ret = system("/var/plugins/lmask"); - if (ret) - fprintf(stderr, "[%s.so] script return code: %d (%m)\n", SCRIPT, ret); - else - fprintf(stderr, "[%s.so] script return code: %d\n", SCRIPT, ret); - _exit(ret); - } - fprintf(stderr, "[%s.so] parent, waiting for child with pid %d...\n", SCRIPT, pid); - waitpid(pid, &status, 0); - fprintf(stderr, "[%s.so] parent, waitpid() returned..\n", SCRIPT); - if (WIFEXITED(status)) - fprintf(stderr, "[%s.so] child returned with status %d\n", SCRIPT, WEXITSTATUS(status)); - return 0; -} diff --git a/archive-sources/logomask/text.c b/archive-sources/logomask/text.c deleted file mode 100644 index bbc8eda..0000000 --- a/archive-sources/logomask/text.c +++ /dev/null @@ -1,195 +0,0 @@ -#include "text.h" -#include "gfx.h" -#include "io.h" - -int FSIZE_BIG=28; -int FSIZE_MED=24; -int FSIZE_SMALL=20; -int TABULATOR=72; - -/****************************************************************************** - * MyFaceRequester - ******************************************************************************/ - -FT_Error MyFaceRequester(FTC_FaceID face_id, FT_Library library, FT_Pointer request_data, FT_Face *aface) -{ - FT_Error result; - - result = FT_New_Face(library, face_id, 0, aface); - - if(result) printf("msgbox \n", (char*)face_id); - - return result; -} - -/****************************************************************************** - * RenderChar - ******************************************************************************/ - -int RenderChar(FT_ULong currentchar, int sx, int sy, int ex, int color) -{ -// unsigned char pix[4]={oldcmap.red[col],oldcmap.green[col],oldcmap.blue[col],oldcmap.transp[col]}; -// unsigned char pix[4]={0x80,0x80,0x80,0x80}; - unsigned char pix[4]={bl[color],gn[color],rd[color],tr[color]}; - int row, pitch, bit, x = 0, y = 0; - FT_UInt glyphindex; - FT_Vector kerning; - FT_Error error; - - currentchar=currentchar & 0xFF; - - //load char - - if(!(glyphindex = FT_Get_Char_Index(face, (int)currentchar))) - { -// printf("msgbox \n", (int)currentchar, error); - return 0; - } - -// no kerning used -/* - if(use_kerning) - { - FT_Get_Kerning(face, prev_glyphindex, glyphindex, ft_kerning_default, &kerning); - - prev_glyphindex = glyphindex; - kerning.x >>= 6; - } - else -*/ - kerning.x = 0; - - //render char - - if(color != -1) /* don't render char, return charwidth only */ - { - if(sx + sbit->xadvance >= ex) return -1; /* limit to maxwidth */ - - for(row = 0; row < sbit->height; row++) - { - for(pitch = 0; pitch < sbit->pitch; pitch++) - { - for(bit = 7; bit >= 0; bit--) - { - if(pitch*8 + 7-bit >= sbit->width) break; /* render needed bits only */ - - if((sbit->buffer[row * sbit->pitch + pitch]) & 1<left + kerning.x + x)*4 + fix_screeninfo.line_length*(starty + sy - sbit->top + y),pix,4); - - x++; - } - } - - x = 0; - y++; - } - - } - - //return charwidth - - return sbit->xadvance + kerning.x; -} - -/****************************************************************************** - * GetStringLen - ******************************************************************************/ - -int GetStringLen(int sx, unsigned char *string, int size) -{ -int i, found; -int stringlen = 0; - - //reset kerning - - prev_glyphindex = 0; - - //calc len - - if(size) - { - desc.width = desc.height = size; - } - - while(*string != '\0') - { - stringlen += RenderChar(*string, -1, -1, -1, -1); - string++; - } - - return stringlen; -} - - -void CatchTabs(char *text) -{ - int i; - char *tptr=text; - - while((tptr=strstr(tptr,"~T"))!=NULL) - { - *(++tptr)='t'; - for(i=0; i<3; i++) - { - if(*(++tptr)) - { - *tptr=' '; - } - } - } -} - -/****************************************************************************** - * RenderString - ******************************************************************************/ - -int RenderString(char *string, int sx, int sy, int maxwidth, int layout, int size, int color) -{ - int stringlen, ex, charwidth,i,found; - char rstr[BUFSIZE], *rptr=rstr, rc; - int varcolor=color; - - //set size - - strcpy(rstr,string); - - desc.width = desc.height = size; - TABULATOR=3*size; - //set alignment - - stringlen = GetStringLen(sx, rstr, size); - - if(layout != LEFT) - { - switch(layout) - { - case CENTER: if(stringlen < maxwidth) sx += (maxwidth - stringlen)/2; - break; - - case RIGHT: if(stringlen < maxwidth) sx += maxwidth - stringlen; - } - } - - //reset kerning - - prev_glyphindex = 0; - - //render string - - ex = sx + maxwidth; - - while(*rptr != '\0') - { - if((charwidth = RenderChar(*rptr, sx, sy, ex, varcolor)) == -1) return sx; /* string > maxwidth */ - sx += charwidth; - rptr++; - } - return stringlen; -} - diff --git a/archive-sources/logomask/text.h b/archive-sources/logomask/text.h deleted file mode 100644 index d69c99d..0000000 --- a/archive-sources/logomask/text.h +++ /dev/null @@ -1,12 +0,0 @@ -#ifndef __TEXT_H__ - -#define __TEXT_H__ - -#include "logoset.h" - -FT_Error MyFaceRequester(FTC_FaceID face_id, FT_Library library, FT_Pointer request_data, FT_Face *aface); -int RenderString(char *string, int sx, int sy, int maxwidth, int layout, int size, int color); -int GetStringLen(int sx, unsigned char *string, int size); -void CatchTabs(char *text); - -#endif diff --git a/archive-sources/msgbox/gfx.c b/archive-sources/msgbox/gfx.c deleted file mode 100755 index e1fae21..0000000 --- a/archive-sources/msgbox/gfx.c +++ /dev/null @@ -1,97 +0,0 @@ -#include "msgbox.h" - -void RenderBox(int sx, int sy, int ex, int ey, int rad, int col) -{ - int F,R=rad,ssx=startx+sx,ssy=starty+sy,dxx=ex-sx,dyy=ey-sy,rx,ry,wx,wy,count; - - unsigned char *pos=(lbb+(ssx<<2)+fix_screeninfo.line_length*ssy); - unsigned char *pos0, *pos1, *pos2, *pos3, *i; - unsigned char pix[4]={bl[col],gn[col],rd[col],tr[col]}; - - if (dxx<0) - { - printf("[shellexec] RenderBox called with dx < 0 (%d)\n", dxx); - dxx=0; - } - - if(R) - { - if(--dyy<=0) - { - dyy=1; - } - - if(R==1 || R>(dxx/2) || R>(dyy/2)) - { - R=dxx/10; - F=dyy/10; - if(R>F) - { - if(R>(dyy/3)) - { - R=dyy/3; - } - } - else - { - R=F; - if(R>(dxx/3)) - { - R=dxx/3; - } - } - } - ssx=0; - ssy=R; - F=1-R; - - rx=R-ssx; - ry=R-ssy; - - pos0=pos+((dyy-ry)*fix_screeninfo.line_length); - pos1=pos+(ry*fix_screeninfo.line_length); - pos2=pos+(rx*fix_screeninfo.line_length); - pos3=pos+((dyy-rx)*fix_screeninfo.line_length); - while (ssx <= ssy) - { - rx=R-ssx; - ry=R-ssy; - wx=rx<<1; - wy=ry<<1; - - for(i=pos0+(rx<<2); i -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "io.h" - -#define RC_DEVICE "/dev/input/nevis_ir" - -extern int instance; -struct input_event ev; -static unsigned short rccode=-1; -static int rc; - -int InitRC(void) -{ - rc = open(RC_DEVICE, O_RDONLY); - if(rc == -1) - { - perror("msgbox "); - exit(1); - } - fcntl(rc, F_SETFL, O_NONBLOCK | O_SYNC); - while(RCKeyPressed()); - return 1; -} - -int CloseRC(void) -{ - while(RCKeyPressed()); - close(rc); - return 1; -} - -int RCKeyPressed(void) -{ - if(read(rc, &ev, sizeof(ev)) == sizeof(ev)) - { - if(ev.value) - { - rccode=ev.code; - return 1; - } - } - rccode = -1; - return 0; -} - - -int GetRCCode(void) -{ - int rv; - - if(!RCKeyPressed() || (get_instance()>instance)) - { - return -1; - } - rv=rccode; - while(RCKeyPressed()); - - return rv; -} - - diff --git a/archive-sources/msgbox/io.h b/archive-sources/msgbox/io.h deleted file mode 100755 index d7914d4..0000000 --- a/archive-sources/msgbox/io.h +++ /dev/null @@ -1,11 +0,0 @@ -#ifndef __IO_H__ - -#define __IO_H__ - -#define RC_DEVICE "/dev/input/nevis_ir" - -int InitRC(void); -int CloseRC(void); -int RCKeyPressed(void); - -#endif diff --git a/archive-sources/msgbox/msgbox.c b/archive-sources/msgbox/msgbox.c deleted file mode 100644 index a9370e7..0000000 --- a/archive-sources/msgbox/msgbox.c +++ /dev/null @@ -1,956 +0,0 @@ -#include -#include -#include -#include -#include "msgbox.h" -#include "text.h" -#include "io.h" -#include "gfx.h" -#include "txtform.h" - -#define M_VERSION 1.11 - -#define NCF_FILE "/var/tuxbox/config/neutrino.conf" -#define HDF_FILE "/tmp/.msgbox_hidden" - -//#define FONT "/usr/share/fonts/md_khmurabi_10.ttf" -#define FONT2 "/share/fonts/pakenham.ttf" -// if font is not in usual place, we look here: -#define FONT "/share/fonts/neutrino.ttf" - -// CMCST, CMCS, CMCT, CMC, CMCIT, CMCI, CMHT, CMH -// WHITE, BLUE0, TRANSP, CMS, ORANGE, GREEN, YELLOW, RED - -unsigned char bl[] = {0x00, 0x00, 0xFF, 0x80, 0xFF, 0x80, 0x00, 0x80, - 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00}; -unsigned char gn[] = {0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xC0, 0x00, - 0xFF, 0x80, 0x00, 0x80, 0xC0, 0xFF, 0xFF, 0x00}; -unsigned char rd[] = {0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, - 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0xFF}; -unsigned char tr[] = {0xFF, 0xFF, 0xFF, 0xA0, 0xFF, 0xA0, 0xFF, 0xFF, - 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF }; - -void TrimString(char *strg); - -// Color table stuff -static char menucoltxt[][25]={"Content_Selected_Text","Content_Selected","Content_Text","Content","Content_inactive_Text","Content_inactive","Head_Text","Head"}; -char *line_buffer=NULL, *title=NULL; -int size=24, type=0, timeout=0, refresh=3, flash=0, selection=0, tbuttons=0, buttons=0, bpline=3, echo=0, absolute=0, mute=1, header=1, cyclic=1; -char *butmsg[16]; -int rbutt[16],hide=0,radius=10; - -// Misc -char NOMEM[]="msgbox \n"; -char TMP_FILE[64]="/tmp/msgbox.tmp"; -unsigned char *lfb = 0, *lbb = 0, *obb = 0, *hbb = 0, *ibb = 0; -unsigned char nstr[BUFSIZE]=""; -unsigned char *trstr; -unsigned rc,sc[8]={'a','o','u','A','O','U','z','d'}, tc[8]={0xE4,0xF6,0xFC,0xC4,0xD6,0xDC,0xDF,0xB0}; -char INST_FILE[]="/tmp/rc.locked"; -int instance=0; - -int get_instance(void) -{ -FILE *fh; -int rval=0; - - if((fh=fopen(INST_FILE,"r"))!=NULL) - { - rval=fgetc(fh); - fclose(fh); - } - return rval; -} - -void put_instance(int pval) -{ -FILE *fh; - - if(pval) - { - if((fh=fopen(INST_FILE,"w"))!=NULL) - { - fputc(pval,fh); - fclose(fh); - } - } - else - { - remove(INST_FILE); - } -} - -static void quit_signal(int sig) -{ - put_instance(get_instance()-1); - printf("msgbox Version %.2f killed\n",M_VERSION); - exit(1); -} - -int Read_Neutrino_Cfg(char *entry) -{ -FILE *nfh; -char tstr [512], *cfptr=NULL; -int rv=-1; - - if((nfh=fopen(NCF_FILE,"r"))!=NULL) - { - tstr[0]=0; - - while((!feof(nfh)) && ((strstr(tstr,entry)==NULL) || ((cfptr=strchr(tstr,'='))==NULL))) - { - fgets(tstr,500,nfh); - } - if(!feof(nfh) && cfptr) - { - ++cfptr; - if(sscanf(cfptr,"%d",&rv)!=1) - { - if(strstr(cfptr,"true")!=NULL) - { - rv=1; - } - else - { - if(strstr(cfptr,"false")!=NULL) - { - rv=0; - } - else - { - rv=-1; - } - } - } -// printf("%s\n%s=%s -> %d\n",tstr,entry,cfptr,rv); - } - fclose(nfh); - } - return rv; -} - -void TrimString(char *strg) -{ -char *pt1=strg, *pt2=strg; - - while(*pt2 && *pt2<=' ') - { - ++pt2; - } - if(pt1 != pt2) - { - do - { - *pt1=*pt2; - ++pt1; - ++pt2; - } - while(*pt2); - *pt1=0; - } - while(strlen(strg) && strg[strlen(strg)-1]<=' ') - { - strg[strlen(strg)-1]=0; - } -} - -int GetSelection(char *sptr) -{ -int rv=0,btn=0,run=1; -char *pt1=strdup(sptr),*pt2,*pt3; - - pt2=pt1; - while(*pt2 && run && btnbpline)?bpline:buttons,blines=1+((btns-1)/lbtns); - - if(hide) - { - memcpy(lfb, hbb, fix_screeninfo.line_length*var_screeninfo.yres); - return 0; - } - yo=40+((header)?FSIZE_MED*5/4:0); - if(!buttonly) - { - memcpy(lbb, ibb, fix_screeninfo.line_length*var_screeninfo.yres); - } - if((tfh=fopen(TMP_FILE,"r"))!=NULL) - { - fclose(tfh); - if(!buttonly) - { - if(type!=1) - { - btns=0; - myo=0; - } - - pxw=GetStringLen(sx,title,FSIZE_BIG)+10; - if(type==1) - { - myo=blines*(butty+buttdy); - for(i=0; ibuttx) - { - buttx=itmp; - } - } - } - buttsize=buttx; - - if(fh_txt_getsize(TMP_FILE, &x1, &y1, size, &cut)) - { - printf("msgbox \n"); - return -1; - } - x1+=10; - - dy=size; - if(pxw((ex-sx)-2*buttdx)) - { - pxw=ex-sx-2*buttdx; - } - psx=((ex-sx)/2-pxw/2); - pyw=y1*dy/*-myo*/; - if(pyw>((ey-sy)-yo-myo)) - { - pyw=((ey-sy)-yo-myo); - } - psy=((ey-sy)/2-(pyw+myo-yo)/2); - if(btns) - { - buttxstart=psx+pxw/2-(((double)lbtns*(double)buttsize+(((lbtns>2)&&(lbtns&1))?((double)buttdx):0.0))/2.0); - buttystart=psy+y1*dy; - } - } - - while(run) - { - //frame layout - if(action) - { - if(!buttonly) - { - RenderBox(psx-20, psy-yo, psx+pxw+20, psy+pyw+myo, radius, CMH); - RenderBox(psx-20+2, psy-yo+2, psx+pxw+20-2, psy+pyw+myo-2, radius, CMC); - if(header) - { - RenderBox(psx-20, psy-yo+2-FSIZE_BIG/2, psx+pxw+20, psy-yo+FSIZE_BIG*3/4, radius, CMH); - RenderString(title, psx, psy-yo+FSIZE_BIG/2, pxw, CENTER, FSIZE_BIG, CMHT); - } - } - if(buttonly || !(rv=fh_txt_load(TMP_FILE, psx, pxw, psy, dy, size, line, &cut))) - { - if(type==1) - { - for(i=0; i\n",aptr); - return 0; - break; - - case 2: - printf("msgbox \n\n",aptr); - ShowUsage(); - return 0; - break; - } - } - - FSIZE_BIG=(FSIZE_MED*5)/4; - FSIZE_SMALL=(FSIZE_MED*4)/5; - TABULATOR=2*FSIZE_MED; - size=FSIZE_MED; - - if(!echo) - { - printf("\nmsgbox Message-Box Version %.2f\n",M_VERSION); - } - if(!buttons) - { - butmsg[0]=strdup("OK"); - buttons=1; - } - if(!absolute) - { - for(tv=0; tv\n",selection); - return 0; - } - } - else - { - for(tv=0; tv=0) - tr[index]=255-(float)tv*2.55; - - sprintf(rstr,"menu_%s_blue",menucoltxt[index]); - if((tv=Read_Neutrino_Cfg(rstr))>=0) - bl[index]=(float)tv*2.55; - - sprintf(rstr,"menu_%s_green",menucoltxt[index]); - if((tv=Read_Neutrino_Cfg(rstr))>=0) - gn[index]=(float)tv*2.55; - - sprintf(rstr,"menu_%s_red",menucoltxt[index]); - if((tv=Read_Neutrino_Cfg(rstr))>=0) - rd[index]=(float)tv*2.55; - } - - if(Read_Neutrino_Cfg("rounded_corners")>0) - radius=10; - else - radius=0; - - fb = open(FB_DEVICE, O_RDWR); - if(fb == -1) - { - perror("msgbox "); - exit(1); - } - - InitRC(); - - if((trstr=malloc(BUFSIZE))==NULL) - { - printf(NOMEM); - return -1; - } - - //init framebuffer - - if(ioctl(fb, FBIOGET_FSCREENINFO, &fix_screeninfo) == -1) - { - perror("msgbox \n"); - return -1; - } - if(ioctl(fb, FBIOGET_VSCREENINFO, &var_screeninfo) == -1) - { - perror("msgbox \n"); - return -1; - } - if(!(lfb = (unsigned char*)mmap(0, fix_screeninfo.smem_len, PROT_READ | PROT_WRITE, MAP_SHARED, fb, 0))) - { - perror("msgbox \n"); - return -1; - } - - //init fontlibrary - - if((error = FT_Init_FreeType(&library))) - { - printf("msgbox ", error); - munmap(lfb, fix_screeninfo.smem_len); - return -1; - } - - if((error = FTC_Manager_New(library, 1, 2, 0, &MyFaceRequester, NULL, &manager))) - { - printf("msgbox \n", error); - FT_Done_FreeType(library); - munmap(lfb, fix_screeninfo.smem_len); - return -1; - } - - if((error = FTC_SBitCache_New(manager, &cache))) - { - printf("msgbox \n", error); - FTC_Manager_Done(manager); - FT_Done_FreeType(library); - munmap(lfb, fix_screeninfo.smem_len); - return -1; - } - - if((error = FTC_Manager_LookupFace(manager, FONT, &face))) - { - if((error = FTC_Manager_LookupFace(manager, FONT2, &face))) - { - printf("msgbox \n", error); - FTC_Manager_Done(manager); - FT_Done_FreeType(library); - munmap(lfb, fix_screeninfo.smem_len); - return 2; - } - else - desc.face_id = FONT2; - } - else - desc.face_id = FONT; - - use_kerning = FT_HAS_KERNING(face); - - desc.flags = FT_LOAD_MONOCHROME; - - //init backbuffer - - if(!(lbb = malloc(fix_screeninfo.line_length*var_screeninfo.yres))) - { - perror("msgbox \n"); - FTC_Manager_Done(manager); - FT_Done_FreeType(library); - munmap(lfb, fix_screeninfo.smem_len); - return -1; - } - - if(!(obb = malloc(fix_screeninfo.line_length*var_screeninfo.yres))) - { - perror("msgbox \n"); - FTC_Manager_Done(manager); - FT_Done_FreeType(library); - free(lbb); - munmap(lfb, fix_screeninfo.smem_len); - return -1; - } - - if(!(hbb = malloc(fix_screeninfo.line_length*var_screeninfo.yres))) - { - perror("msgbox \n"); - FTC_Manager_Done(manager); - FT_Done_FreeType(library); - free(lbb); - free(obb); - munmap(lfb, fix_screeninfo.smem_len); - return -1; - } - - if(!(ibb = malloc(fix_screeninfo.line_length*var_screeninfo.yres))) - { - perror("msgbox \n"); - FTC_Manager_Done(manager); - FT_Done_FreeType(library); - free(lbb); - free(obb); - free(hbb); - munmap(lfb, fix_screeninfo.smem_len); - return -1; - } - - if(refresh & 1) - { - memcpy(ibb, lfb, fix_screeninfo.line_length*var_screeninfo.yres); - } - else - { - memset(ibb, TRANSP, fix_screeninfo.line_length*var_screeninfo.yres); - } - if(mute==2) - { - memcpy(hbb, lfb, fix_screeninfo.line_length*var_screeninfo.yres); - } - else - { - memset(hbb, TRANSP, fix_screeninfo.line_length*var_screeninfo.yres); - } - if(refresh & 2) - { - memcpy(obb, lfb, fix_screeninfo.line_length*var_screeninfo.yres); - } - else - { - memset(obb, TRANSP, fix_screeninfo.line_length*var_screeninfo.yres); - } - - startx = sx; - starty = sy; - - - /* Set up signal handlers. */ - signal(SIGINT, quit_signal); - signal(SIGTERM, quit_signal); - signal(SIGQUIT, quit_signal); - - put_instance(instance=get_instance()+1); - - show_txt(0); - - time(&tm1); - tm2=tm1; - - //main loop - while((rcc!=KEY_EXIT) && (rcc!=KEY_OK) && ((timeout==-1)||((tm2-tm1)100) - { - if(cyclic) - { - show_txt(0); - cupd=0; - } - } - usleep(10000L); - } - if(mute && rcc==KEY_MUTE) - { - hide^=1; - show_txt(0); - usleep(500000L); - while(GetRCCode()!=-1); - if(hide) - { - if((fh=fopen(HDF_FILE,"w"))!=NULL) - { - fprintf(fh,"hidden"); - fclose(fh); - } - } - else - { - remove(HDF_FILE); - } - } - if((!hide) && (rcc!=KEY_EXIT) && (rcc!=KEY_OK)) - { - switch(rcc) - { - case KEY_LEFT: - if(!hide && (--selection<1)) - { - selection=buttons; - } - show_txt(1); - break; - - case KEY_RIGHT: - if(!hide && (++selection>buttons)) - { - selection=1; - } - show_txt(1); - break; - - case KEY_UP: - if(!hide && ((selection-=bpline)<1)) - { - selection=1; - } - show_txt(1); - break; - - case KEY_DOWN: - if(!hide && ((selection+=bpline)>buttons)) - { - selection=buttons; - } - show_txt(1); - break; - } - } - time(&tm2); - if(hide) - { - rcc=-1; - } - } - if((type!=1) || (rcc!=KEY_OK)) - { - selection=0; - } - - - //cleanup - - memcpy(lfb, obb, fix_screeninfo.line_length*var_screeninfo.yres); - munmap(lfb, fix_screeninfo.smem_len); - close(fb); - free(lbb); - - put_instance(get_instance()-1); - - if(echo && selection>0) - { - printf("%s\n",butmsg[selection-1]); - } - - for(tv=0; tv -#include -#include -#include -#include -#include -#include -#include -#if HAVE_DVB_API_VERSION == 3 -#include -#endif -#include -#include -#include -#include - -#include -#include FT_FREETYPE_H -#include FT_CACHE_H -#include FT_CACHE_SMALL_BITMAPS_H - -#define MAX_BUTTONS 16 -#define BUFSIZE 4095 - -extern unsigned char FONT[64]; - -enum {LEFT, CENTER, RIGHT}; - -FT_Error error; -FT_Library library; -FTC_Manager manager; -FTC_SBitCache cache; -FTC_SBit sbit; -#if FREETYPE_MAJOR == 2 && FREETYPE_MINOR == 0 -FTC_Image_Desc desc; -#else -FTC_ImageTypeRec desc; -#endif -FT_Face face; -FT_UInt prev_glyphindex; -FT_Bool use_kerning; - -// rc codes - -#undef KEY_EPG -#undef KEY_SAT -#undef KEY_STOP -#undef KEY_PLAY - -#define KEY_1 2 -#define KEY_2 3 -#define KEY_3 4 -#define KEY_4 5 -#define KEY_5 6 -#define KEY_6 7 -#define KEY_7 8 -#define KEY_8 9 -#define KEY_9 10 -#define KEY_BACKSPACE 14 -#define KEY_UP 103 -#define KEY_LEFT 105 -#define KEY_RIGHT 106 -#define KEY_DOWN 108 -#define KEY_MUTE 113 -#define KEY_VOLUMEDOWN 114 -#define KEY_VOLUMEUP 115 -#define KEY_POWER 116 -#define KEY_HELP 138 -#define KEY_HOME 102 -#define KEY_EXIT 174 -#define KEY_SETUP 141 -#define KEY_PAGEUP 104 -#define KEY_PAGEDOWN 109 -#define KEY_OK 0x160 -#define KEY_RED 0x18e -#define KEY_GREEN 0x18f -#define KEY_YELLOW 0x190 -#define KEY_BLUE 0x191 - -#define KEY_TVR 0x179 -#define KEY_TTX 0x184 -#define KEY_COOL 0x1A1 -#define KEY_FAV 0x16C -#define KEY_EPG 0x16D -#define KEY_VF 0x175 - -#define KEY_SAT 0x17D -#define KEY_SKIPP 0x197 -#define KEY_SKIPM 0x19C -#define KEY_TS 0x167 -#define KEY_AUDIO 0x188 -#define KEY_REW 0x0A8 -#define KEY_FWD 0x09F -#define KEY_HOLD 0x077 -#define KEY_REC 0x0A7 -#define KEY_STOP 0x080 -#define KEY_PLAY 0x0CF - -//devs - -int fb; - -//framebuffer stuff - -enum {FILL, GRID}; - -enum {CMCST, CMCS, CMCT, CMC, CMCIT, CMCI, CMHT, CMH, WHITE, BLUE1, GTRANSP, CMS, ORANGE, GREEN, YELLOW, RED}; -#define TRANSP 0 - -extern int FSIZE_BIG; -extern int FSIZE_MED; -extern int FSIZE_SMALL; -extern int TABULATOR; - -extern unsigned char *lfb, *lbb, *obb, *hbb; - -struct fb_fix_screeninfo fix_screeninfo; -struct fb_var_screeninfo var_screeninfo; -extern unsigned char rd[],gn[],bl[],tr[]; - -int startx, starty, sx, ex, sy, ey, debounce, rblock; -extern unsigned sc[8], tc[8]; -extern char *butmsg[MAX_BUTTONS]; -extern int buttons,selection; -extern int instance; -int get_instance(void); -void put_instance(int pval); - -#define FB_DEVICE "/dev/fb/0" - -#endif - diff --git a/archive-sources/msgbox/msgbox.txt b/archive-sources/msgbox/msgbox.txt deleted file mode 100755 index deb13ed..0000000 --- a/archive-sources/msgbox/msgbox.txt +++ /dev/null @@ -1,8 +0,0 @@ -~cBeispiel f~ur Formatierungs-M~oglichkeiten der Message-Box -~s -Text ist in Standard, ~Rrot~S, ~Ggr~un~S, ~Bblau~S und ~Ygelb ~Sm~oglich -~cZeilen k~onnen zentriert, -~roder auf Rechtsanschlag formatiert werden - -Tabulatoren:~tTab1~tTab2~tTab3~tTab4~tTab5~tTab6 -~t~tTab1~t~tTab3~t~tTab5 \ No newline at end of file diff --git a/archive-sources/msgbox/text.c b/archive-sources/msgbox/text.c deleted file mode 100644 index fb90e07..0000000 --- a/archive-sources/msgbox/text.c +++ /dev/null @@ -1,272 +0,0 @@ -#include "text.h" -#include "gfx.h" -#include "io.h" - -int FSIZE_BIG=28; -int FSIZE_MED=24; -int FSIZE_SMALL=20; -int TABULATOR=72; - -/****************************************************************************** - * MyFaceRequester - ******************************************************************************/ - -FT_Error MyFaceRequester(FTC_FaceID face_id, FT_Library library, FT_Pointer request_data, FT_Face *aface) -{ - FT_Error result; - - result = FT_New_Face(library, face_id, 0, aface); - - if(result) printf("msgbox \n", (char*)face_id); - - return result; -} - -/****************************************************************************** - * RenderChar - ******************************************************************************/ - -int RenderChar(FT_ULong currentchar, int sx, int sy, int ex, int color) -{ -// unsigned char pix[4]={oldcmap.red[col],oldcmap.green[col],oldcmap.blue[col],oldcmap.transp[col]}; -// unsigned char pix[4]={0x80,0x80,0x80,0x80}; - unsigned char pix[4]={bl[color],gn[color],rd[color],tr[color]}; - int row, pitch, bit, x = 0, y = 0; - FT_UInt glyphindex; - FT_Vector kerning; - FT_Error error; - - currentchar=currentchar & 0xFF; - - //load char - - if(!(glyphindex = FT_Get_Char_Index(face, (int)currentchar))) - { -// printf("msgbox \n", (int)currentchar, error); - return 0; - } - -// no kerning used -/* - if(use_kerning) - { - FT_Get_Kerning(face, prev_glyphindex, glyphindex, ft_kerning_default, &kerning); - - prev_glyphindex = glyphindex; - kerning.x >>= 6; - } - else -*/ - kerning.x = 0; - - //render char - - if(color != -1) /* don't render char, return charwidth only */ - { - if(sx + sbit->xadvance >= ex) return -1; /* limit to maxwidth */ - - for(row = 0; row < sbit->height; row++) - { - for(pitch = 0; pitch < sbit->pitch; pitch++) - { - for(bit = 7; bit >= 0; bit--) - { - if(pitch*8 + 7-bit >= sbit->width) break; /* render needed bits only */ - - if((sbit->buffer[row * sbit->pitch + pitch]) & 1<left + kerning.x + x)*4 + fix_screeninfo.line_length*(starty + sy - sbit->top + y),pix,4); - - x++; - } - } - - x = 0; - y++; - } - - } - - //return charwidth - - return sbit->xadvance + kerning.x; -} - -/****************************************************************************** - * GetStringLen - ******************************************************************************/ - -int GetStringLen(int sx, unsigned char *string, int size) -{ -int i, found; -int stringlen = 0; - - //reset kerning - - prev_glyphindex = 0; - - //calc len - - if(size) - { - desc.width = desc.height = size; - } - - while(*string != '\0') - { - if(*string != '~') - { - stringlen += RenderChar(*string, -1, -1, -1, -1); - } - else - { - string++; - if(*string=='t') - { - stringlen=desc.width+TABULATOR*((int)(stringlen/TABULATOR)+1); - } - else - { - if(*string=='T') - { - if(sscanf(string+1,"%4d",&i)==1) - { - string+=4; - stringlen=i-sx; - } - } - else - { - found=0; - for(i=0; i maxwidth */ - sx += charwidth; - } - else - { - switch(*rptr) - { - case 'R': varcolor=RED; break; - case 'G': varcolor=GREEN; break; - case 'Y': varcolor=YELLOW; break; - case 'B': varcolor=BLUE1; break; - case 'S': varcolor=color; break; - case 't': - sx=TABULATOR*((int)(sx/TABULATOR)+1); - break; - case 'T': - if(sscanf(rptr+1,"%4d",&i)==1) - { - rptr+=4; - sx=i; - } - break; - } - } - } - else - { - if((charwidth = RenderChar(*rptr, sx, sy, ex, varcolor)) == -1) return sx; /* string > maxwidth */ - sx += charwidth; - } - rptr++; - } - return stringlen; -} - diff --git a/archive-sources/msgbox/text.h b/archive-sources/msgbox/text.h deleted file mode 100755 index a28cac1..0000000 --- a/archive-sources/msgbox/text.h +++ /dev/null @@ -1,12 +0,0 @@ -#ifndef __TEXT_H__ - -#define __TEXT_H__ - -#include "msgbox.h" - -FT_Error MyFaceRequester(FTC_FaceID face_id, FT_Library library, FT_Pointer request_data, FT_Face *aface); -int RenderString(char *string, int sx, int sy, int maxwidth, int layout, int size, int color); -int GetStringLen(int sx, unsigned char *string, int size); -void CatchTabs(char *text); - -#endif diff --git a/archive-sources/msgbox/txtform.c b/archive-sources/msgbox/txtform.c deleted file mode 100755 index 4933d27..0000000 --- a/archive-sources/msgbox/txtform.c +++ /dev/null @@ -1,108 +0,0 @@ -//#include "config.h" -#include -#include -#include -#include -#include "text.h" -#include "gfx.h" -#include "msgbox.h" - -#define FH_ERROR_OK 0 -#define FH_ERROR_FILE 1 /* read/access error */ -#define FH_ERROR_FORMAT 2 /* file format error */ -#define FH_ERROR_MALLOC 3 /* error during malloc */ - -int fh_txt_trans(const char *name, int xs, int xw, int ys, int dy, int size, int line, int *cut, int *x, int *y, int plot) -{ -char tstr[BUFSIZE],rstr[BUFSIZE],*tptr; -int loop=1, j, first, slen, cnt=0; -FILE *fh; -int just, color=CMCT; - - if(!(fh=fopen(name,"rb"))) return(FH_ERROR_FILE); - - first=(line==0); - *x=0; - *y=0; - while((loop>0) && (fgets(tstr, sizeof(tstr), fh))) - { - j=0; - just=LEFT; - color=CMCT; - - tptr=tstr+strlen(tstr); - while((tptr>=tstr) && (*tptr<=32)) - { - *tptr=0; - --tptr; - } - tptr=tstr; - while(*tptr) - { - rstr[j++]=*tptr; - cnt++; - - if(*tptr == '~') - { - switch (*(tptr+1)) - { - case 'l': just=LEFT; break; - case 'r': just=RIGHT; break; - case 'c': just=CENTER; break; - case 's': - RenderBox(xs, ys-size/3+1, xs+xw, ys-size/3+2, FILL, CMS); - RenderBox(xs, ys-size/3, xs+xw, ys-size/3+1, FILL, CMCIT); - break; - } - } - tptr++; - } - if((loop>0) && (ys<(ey-dy))) - { - rstr[j]=0; - if(plot) - { - if(loop>=line) - { - RenderString(rstr, xs, ys, xw, just, size, color); - if(strlen(rstr)) - { - first=0; - } - ys+=dy; - } - } - else - { - if(strlen(rstr)) - { - slen=GetStringLen(xs, rstr, size); - if(slen>*x) - { - *x=slen; - } - } - *y=*y+1; - } - } - } - if(plot) - { - *cut=(ys>=(ey-dy)); - } - fclose(fh); - return(FH_ERROR_OK); -} - -int fh_txt_load(const char *name, int sx, int wx, int sy, int dy, int size, int line, int *cut) -{ -int dummy; - - return fh_txt_trans(name, sx, wx, sy, dy, size, line, cut, &dummy, &dummy, 1); -} - - -int fh_txt_getsize(const char *name, int *x, int *y, int size, int *cut) -{ - return fh_txt_trans(name, 0, 0, 0, 0, size, 0, cut, x, y, 0); -} diff --git a/archive-sources/msgbox/txtform.h b/archive-sources/msgbox/txtform.h deleted file mode 100755 index ff7d7f8..0000000 --- a/archive-sources/msgbox/txtform.h +++ /dev/null @@ -1,7 +0,0 @@ -#ifndef __TXTFORM_H__ -#define __TXTFORM_H__ - -int fh_txt_load(const char *name, int sx, int wx, int sy, int dy, int size, int line, int *cut); -int fh_txt_getsize(const char *filename, int *x, int *y, int size, int *cut); - -#endif diff --git a/archive-sources/shellexec/gfx.c b/archive-sources/shellexec/gfx.c deleted file mode 100755 index 5a4b20f..0000000 --- a/archive-sources/shellexec/gfx.c +++ /dev/null @@ -1,187 +0,0 @@ -#include "shellexec.h" -#include "gfx.h" - -char circle[] = -{ - 0,0,0,0,0,1,1,0,0,0,0,0, - 0,0,0,1,1,1,1,1,1,0,0,0, - 0,0,1,1,1,1,1,1,1,1,0,0, - 0,1,1,1,1,1,1,1,1,1,1,0, - 0,1,1,1,1,1,1,1,1,1,1,0, - 1,1,1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1,1,1, - 0,1,1,1,1,1,1,1,1,1,1,0, - 0,1,1,1,1,1,1,1,1,1,1,0, - 0,0,1,1,1,1,1,1,1,1,0,0, - 0,0,0,1,1,1,1,1,1,0,0,0, - 0,0,0,0,0,1,1,0,0,0,0,0 -}; - -//typedef struct { unsigned char width_lo; unsigned char width_hi; unsigned char height_lo; unsigned char height_hi; unsigned char transp; } IconHeader; - - -void RenderBox(int sx, int sy, int ex, int ey, int rad, int col) -{ - int F,R=rad,ssx=startx+sx,ssy=starty+sy,dxx=ex-sx,dyy=ey-sy,rx,ry,wx,wy,count; - - unsigned char *pos=(lbb+(ssx<<2)+fix_screeninfo.line_length*ssy); - unsigned char *pos0, *pos1, *pos2, *pos3, *i; - unsigned char pix[4]={bl[col],gn[col],rd[col],tr[col]}; - - if (dxx<0) - { - printf("[shellexec] RenderBox called with dx < 0 (%d)\n", dxx); - dxx=0; - } - - if(R) - { - if(--dyy<=0) - { - dyy=1; - } - - if(R==1 || R>(dxx/2) || R>(dyy/2)) - { - R=dxx/10; - F=dyy/10; - if(R>F) - { - if(R>(dyy/3)) - { - R=dyy/3; - } - } - else - { - R=F; - if(R>(dxx/3)) - { - R=dxx/3; - } - } - } - ssx=0; - ssy=R; - F=1-R; - - rx=R-ssx; - ry=R-ssy; - - pos0=pos+((dyy-ry)*fix_screeninfo.line_length); - pos1=pos+(ry*fix_screeninfo.line_length); - pos2=pos+(rx*fix_screeninfo.line_length); - pos3=pos+((dyy-rx)*fix_screeninfo.line_length); - while (ssx <= ssy) - { - rx=R-ssx; - ry=R-ssy; - wx=rx<<1; - wy=ry<<1; - - for(i=pos0+(rx<<2); i\n", filename); - return; - } - - read(fd, &iheader, sizeof(IconHeader)); - - width = (iheader.width_hi << 8) | iheader.width_lo; - height = (iheader.height_hi << 8) | iheader.height_lo; - - - for (count=0; count> 1 ); - pixpos = (unsigned char*) &pixbuf; - d2 = d; - for (count2=0; count2> 1; count2 ++ ) - { - compressed = *pixpos; - pix1 = (compressed & 0xf0) >> 4; - pix2 = (compressed & 0x0f); - - if (pix1 != iheader.transp) - { - *d2=pix1 + offset; - } - d2++; - if (pix2 != iheader.transp) - { - *d2=pix2 + offset; - } - d2++; - pixpos++; - } - d += var_screeninfo.xres; - } - close(fd); - return; -} -*/ \ No newline at end of file diff --git a/archive-sources/shellexec/gfx.h b/archive-sources/shellexec/gfx.h deleted file mode 100755 index d2e2dac..0000000 --- a/archive-sources/shellexec/gfx.h +++ /dev/null @@ -1,9 +0,0 @@ -#ifndef __GFX_H__ - -#define __GFX_H__ - -void RenderBox(int sx, int sy, int ex, int ey, int mode, int color); -void RenderCircle(int sx, int sy, char type); -//void PaintIcon(char *filename, int x, int y, unsigned char offset); - -#endif diff --git a/archive-sources/shellexec/io.c b/archive-sources/shellexec/io.c deleted file mode 100755 index 198493d..0000000 --- a/archive-sources/shellexec/io.c +++ /dev/null @@ -1,164 +0,0 @@ -#define _GNU_SOURCE -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "shellexec.h" -#include "io.h" - -extern int instance; -struct input_event ev; -static unsigned short rccode=-1; -static int rc; - -int InitRC(void) -{ - rc = open(RC_DEVICE, O_RDONLY); - if(rc == -1) - { - perror("shellexec "); - exit(1); - } - fcntl(rc, F_SETFL, O_NONBLOCK | O_SYNC); - while(RCKeyPressed()); - return 1; -} - -int CloseRC(void) -{ - while(RCKeyPressed()); - close(rc); - return 1; -} - -int RCKeyPressed(void) -{ - if(read(rc, &ev, sizeof(ev)) == sizeof(ev)) - { - if(ev.value) - { - rccode=ev.code; - return 1; - } - } - rccode = -1; - return 0; -} - - -int RCTranslate(int code) -{ - switch(code) - { - case KEY_UP: rccode = RC_UP; - break; - - case KEY_DOWN: rccode = RC_DOWN; - break; - - case KEY_PAGEUP: rccode = RC_PAGEUP; - break; - - case KEY_PAGEDOWN: rccode = RC_PAGEDOWN; - break; - - case KEY_OK: rccode = RC_OK; - break; - - case KEY_0: rccode = RC_0; - break; - - case KEY_1: rccode = RC_1; - break; - - case KEY_2: rccode = RC_2; - break; - - case KEY_3: rccode = RC_3; - break; - - case KEY_4: rccode = RC_4; - break; - - case KEY_5: rccode = RC_5; - break; - - case KEY_6: rccode = RC_6; - break; - - case KEY_7: rccode = RC_7; - break; - - case KEY_8: rccode = RC_8; - break; - - case KEY_9: rccode = RC_9; - break; - - case KEY_RED: rccode = RC_RED; - break; - - case KEY_GREEN: rccode = RC_GREEN; - break; - - case KEY_YELLOW: rccode = RC_YELLOW; - break; - - case KEY_BLUE: rccode = RC_BLUE; - break; - - case KEY_VOLUMEUP: rccode = RC_PLUS; - break; - - case KEY_VOLUMEDOWN: rccode = RC_MINUS; - break; - - case KEY_MUTE: rccode = RC_MUTE; - break; - - case KEY_HELP: rccode = RC_HELP; - break; - - case KEY_SETUP: rccode = RC_DBOX; - break; - - case KEY_EXIT: rccode = RC_HOME; - break; - - case KEY_POWER: rccode = RC_STANDBY; - break; - - default: rccode = -1; - } - - return rccode; - -} - -int GetRCCode(void) -{ - int rv; - - if(!RCKeyPressed() || (get_instance()>instance)) - { - return -1; - } - rv=rccode; - while(RCKeyPressed()); - - return RCTranslate(rv); -} - - diff --git a/archive-sources/shellexec/io.h b/archive-sources/shellexec/io.h deleted file mode 100755 index 1619ae7..0000000 --- a/archive-sources/shellexec/io.h +++ /dev/null @@ -1,12 +0,0 @@ -#ifndef __IO_H__ - -#define __IO_H__ - -#define RC_DEVICE "/dev/input/nevis_ir" - -int InitRC(void); -int CloseRC(void); -int RCKeyPressed(void); -int GetRCCode(void); - -#endif diff --git a/archive-sources/shellexec/shellexec.c b/archive-sources/shellexec/shellexec.c deleted file mode 100644 index 79025c2..0000000 --- a/archive-sources/shellexec/shellexec.c +++ /dev/null @@ -1,1830 +0,0 @@ -#include -#include -#include -#include "shellexec.h" -#include "text.h" -#include "io.h" -#include "gfx.h" - -static char CFG_FILE[128]="/var/tuxbox/config/shellexec.conf"; - -//#define FONT "/usr/share/fonts/md_khmurabi_10.ttf" -#define FONT2 "/share/fonts/pakenham.ttf" -// if font is not in usual place, we look here: -unsigned char FONT[128]="/share/fonts/neutrino.ttf"; - -// CMCST, CMCS, CMCT, CMC, CMCIT, CMCI, CMHT, CMH -// WHITE, BLUE0, TRANSP, CMS, ORANGE, GREEN, YELLOW, RED - -unsigned char bl[] = { 0x00, 0x00, 0xFF, 0x80, 0xFF, 0x80, 0x00, 0x80, - 0xFF, 0x80, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00}; -unsigned char gn[] = { 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xC0, 0x00, - 0xFF, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x00, - 0x00, 0x00, 0x00, 0x00}; -unsigned char rd[] = { 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, - 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x80, 0x80, - 0x00, 0x00, 0x00, 0x00}; -unsigned char tr[] = { 0xFF, 0xFF, 0xFF, 0xA0, 0xFF, 0x80, 0xFF, 0xFF, - 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0x00, 0x00, 0x00, 0x00}; - -void TrimString(char *strg); - -// OSD stuff -static char menucoltxt[][25]={"Content_Selected_Text","Content_Selected","Content_Text","Content","Content_inactive_Text","Content_inactive","Head_Text","Head"}; -static char spres[][5]={"","_crt","_lcd"}; - -#define LIST_STEP 10 -#define BUFSIZE 4095 -#define SH_VERSION 1.19 -typedef struct {int fnum; FILE *fh[16];} FSTRUCT, *PFSTRUCT; - -static int direct[32]; -int MAX_FUNCS=10; -static int STYP=1; - -typedef struct {char *entry; char *message; int headerpos; int type; int underline; int stay; int showalways;} LISTENTRY; -typedef LISTENTRY *PLISTENTRY; -typedef PLISTENTRY *LIST; -typedef struct {int num_headers; int act_header; int max_header; int *headerwait; int *headermed; char **headertxt; char **icon; int *headerlevels; int *lastheaderentrys; int num_entrys; int act_entry; int max_entrys; int num_active; char *menact; char *menactdep; LIST list;} MENU; -enum {TYP_MENU, TYP_MENUDON, TYP_MENUDOFF, TYP_MENUFON, TYP_MENUFOFF, TYP_MENUSON, TYP_MENUSOFF, TYP_EXECUTE, TYP_COMMENT, TYP_DEPENDON, TYP_DEPENDOFF, TYP_FILCONTON, TYP_FILCONTOFF, TYP_SHELLRESON, TYP_SHELLRESOFF, TYP_ENDMENU, TYP_INACTIVE}; -static char TYPESTR[TYP_ENDMENU+1][13]={"MENU=","MENUDON=","MENUDOFF=","MENUFON=","MENUFOFF=","MENUSON=","MENUSOFF=","ACTION=","COMMENT=","DEPENDON=","DEPENDOFF=","FILCONTON=","FILCONTOFF=","SHELLRESON=","SHELLRESOFF=","ENDMENU"}; -char NOMEM[]="ShellExec \n"; - -MENU menu; - -int Check_Config(void); -int Clear_List(MENU *m, int mode); -int Get_Selection(MENU *m); -int AddListEntry(MENU *m, char *line, int pos); -int Get_Menu(int showwait); -static void ShowInfo(MENU *m, int knew); - - -unsigned char *lfb = 0, *lbb = 0; -unsigned char title[256]; -unsigned char VFD[256]=""; -char url[256]="time.fu-berlin.de"; -char *line_buffer=NULL; -unsigned char *trstr; -int mloop=1, paging=1, mtmo=120, radius=10; -int ixw=600, iyw=680, xoffs=13, vfd=0; -char INST_FILE[]="/tmp/rc.locked"; -int instance=0; - -int get_instance(void) -{ -FILE *fh; -int rval=0; - - if((fh=fopen(INST_FILE,"r"))!=NULL) - { - rval=fgetc(fh); - fclose(fh); - } - return rval; -} - -void put_instance(int pval) -{ -FILE *fh; - - if(pval) - { - if((fh=fopen(INST_FILE,"w"))!=NULL) - { - fputc(pval,fh); - fclose(fh); - } - } - else - { - remove(INST_FILE); - } -} - -static void quit_signal(int sig) -{ - put_instance(get_instance()-1); - printf("shellexec Version %.2f killed, signal %d\n",SH_VERSION,sig); - exit(1); -} - -char *strxchr(char *xstr, char srch) -{ -int quota=0; -char *resptr=xstr; - - if(resptr) - { - while(*resptr) - { - if(!quota && (*resptr==srch)) - { - return resptr; - } - if(*resptr=='\'') - { - quota^=1; - } - ++resptr; - } - } - return NULL; -} - -void TrimString(char *strg) -{ -char *pt1=strg, *pt2=strg; - - while(*pt2 && *pt2<=' ') - { - ++pt2; - } - if(pt1 != pt2) - { - do - { - *pt1=*pt2; - ++pt1; - ++pt2; - } - while(*pt2); - *pt1=0; - } - while(strlen(strg) && strg[strlen(strg)-1]<=' ') - { - strg[strlen(strg)-1]=0; - } -} - -int GetLine(char *buffer, int size, PFSTRUCT fstruct) -{ -int rv=0; -char *pt1; - - if(fstruct->fnum<0) - { - return rv; - } - rv=(fgets(buffer, size, fstruct->fh[fstruct->fnum])!=NULL); - if(!rv) - { - while(!rv) - { - if(!fstruct->fnum) - { - return rv; - } - else - { - fclose(fstruct->fh[fstruct->fnum]); - --fstruct->fnum; - rv=(fgets(buffer, size, fstruct->fh[fstruct->fnum])!=NULL); - } - } - } - if(rv) - { - TrimString(buffer); - if(strstr(buffer,"INCLUDE=") && (fstruct->fnum<15) && ((pt1=strchr(buffer,'='))!=NULL)) - { - if(((fstruct->fh[fstruct->fnum+1]=fopen(++pt1,"r"))!=NULL) && (fgets(buffer, BUFSIZE, fstruct->fh[fstruct->fnum+1]))) - { - fstruct->fnum++; - TrimString(buffer); - } - } - TranslateString(buffer); - } - return rv; -} - -int ExistFile(char *fname) -{ -FILE *efh; - - if((efh=fopen(fname,"r"))==NULL) - { - return 0; - } - fclose(efh); - return 1; -} - -int FileContainText(char *line) -{ -int rv=0; -long flength; -char *pt1,*tline=strdup(line),*fbuf=NULL; -FILE *ffh; - - if((pt1=strchr(tline,' '))!=NULL) - { - *pt1=0; - ++pt1; - if((ffh=fopen(tline,"r"))!=NULL) - { - fseek(ffh,0,SEEK_END); - flength=ftell(ffh); - rewind(ffh); - if((fbuf=calloc(flength+1,sizeof(char)))!=NULL) - { - if(fread(fbuf,(size_t)flength,1,ffh)>0) - { - *(fbuf+flength)=0; - rv=strstr(fbuf,pt1)!=NULL; - } - free(fbuf); - } - fclose(ffh); - } - } - free(tline); - return rv; -} - -int Read_Neutrino_Cfg(char *entry) -{ -FILE *nfh; -char tstr [512], *cfptr=NULL; -int rv=-1; - - if((nfh=fopen(NCF_FILE,"r"))!=NULL) - { - tstr[0]=0; - - while((!feof(nfh)) && ((strstr(tstr,entry)==NULL) || ((cfptr=strchr(tstr,'='))==NULL))) - { - fgets(tstr,500,nfh); - } - if(!feof(nfh) && cfptr) - { - ++cfptr; - if(sscanf(cfptr,"%d",&rv)!=1) - { - if(strstr(cfptr,"true")!=NULL) - { - rv=1; - } - else - { - if(strstr(cfptr,"false")!=NULL) - { - rv=0; - } - else - { - rv=-1; - } - } - } -// printf("%s\n%s=%s -> %d\n",tstr,entry,cfptr,rv); - } - fclose(nfh); - } - return rv; -} - -int IsMenu(char *buf) -{ -int i, res=0; - - for(i=TYP_MENU; !res && i<=TYP_MENUSOFF; i++) - { - if(strstr(buf,TYPESTR[i])==buf) - { - res=1; - } - } - return res; -} - -void OnMenuClose(char *cmd, char *dep) -{ -int res=1; - - if(dep) - { - res=!system(dep); - res|=ExistFile(dep); - } - if(cmd && res) - { - ShowMessage("System-Aktualisierung", "Bitte warten", 0); - system(cmd); - } -} - -int Check_Config(void) -{ -int rv=-1, level=0; -char *pt1,*pt2; -FSTRUCT fstr; - - if((fstr.fh[0]=fopen(CFG_FILE,"r"))!=NULL) - { - fstr.fnum=0; - while(GetLine(line_buffer, BUFSIZE, &fstr)) - { - if(IsMenu(line_buffer)) - { - if(menu.num_headers>=menu.max_header) - { - if((menu.headertxt=realloc(menu.headertxt,(menu.max_header+LIST_STEP)*sizeof(char*)))==NULL) - { - printf(NOMEM); - Clear_List(&menu,0); - return rv; - } - memset(&menu.headertxt[menu.max_header],0,LIST_STEP*sizeof(char*)); - if((menu.icon=realloc(menu.icon,(menu.max_header+LIST_STEP)*sizeof(char*)))==NULL) - { - printf(NOMEM); - Clear_List(&menu,0); - return rv; - } - memset(&menu.icon[menu.max_header],0,LIST_STEP*sizeof(char*)); - if((menu.headerlevels=realloc(menu.headerlevels,(menu.max_header+LIST_STEP)*sizeof(int)))==NULL) - { - printf(NOMEM); - Clear_List(&menu,0); - return rv; - } - memset(&menu.headerlevels[menu.max_header],0,LIST_STEP*sizeof(int)); - if((menu.headerwait=realloc(menu.headerwait,(menu.max_header+LIST_STEP)*sizeof(int)))==NULL) - { - printf(NOMEM); - Clear_List(&menu,0); - return rv; - } - memset(&menu.headerwait[menu.max_header],0,LIST_STEP*sizeof(int)); - if((menu.headermed=realloc(menu.headermed,(menu.max_header+LIST_STEP)*sizeof(int)))==NULL) - { - printf(NOMEM); - Clear_List(&menu,0); - return rv; - } - memset(&menu.headermed[menu.max_header],0,LIST_STEP*sizeof(int)); - if((menu.lastheaderentrys=realloc(menu.lastheaderentrys,(menu.max_header+LIST_STEP)*sizeof(int)))==NULL) - { - printf(NOMEM); - Clear_List(&menu,0); - return rv; - } - memset(&menu.lastheaderentrys[menu.max_header],0,LIST_STEP*sizeof(int)); - menu.max_header+=LIST_STEP; - } - pt1=strchr(line_buffer,'='); - if(!pt1) - { - pt1=line_buffer; - } - else - { - ++pt1; - } - pt2=pt1; - while(*pt2 && ((*pt2=='*') || (*pt2=='&') || (*pt2=='§') || (*pt2=='+') || (*pt2=='-') || (*pt2=='!') || (*pt2=='_'))) - { - if(*pt2=='_') - { - menu.headermed[menu.num_headers]=1; - } - while(*(++pt2)) - { - *(pt2-1)=*pt2; - } - *(pt2-1)=0; - pt2=pt1; - } - - if(menu.icon[menu.num_headers]) - { - free(menu.icon[menu.num_headers]); - menu.icon[menu.num_headers]=NULL; - } - if((pt2=strstr(pt1,",ICON="))!=NULL) - { - *pt2=0; - menu.icon[menu.num_headers]=strdup(pt2+6); - } - if(menu.headertxt[menu.num_headers]) - { - free(menu.headertxt[menu.num_headers]); - } - menu.headerlevels[menu.num_headers]=level++; - if((pt2=strxchr(pt1,','))!=NULL) - { - *pt2=0; - } - menu.headertxt[menu.num_headers++]=strdup(pt1); - } - else - { - if(strstr(line_buffer,TYPESTR[TYP_ENDMENU])==line_buffer) - { - --level; - } - else - { - if(strstr(line_buffer,"FONT=")==line_buffer) - { - strcpy(FONT,strchr(line_buffer,'=')+1); - } - if(strstr(line_buffer,"VFD=")==line_buffer) - { - strcpy(VFD,strchr(line_buffer,'=')+1); - if(access(VFD,1)!=-1) - vfd=1; - } - if(strstr(line_buffer,"FONTSIZE=")==line_buffer) - { - sscanf(strchr(line_buffer,'=')+1,"%d",&FSIZE_MED); - } - if(strstr(line_buffer,"PAGING=")==line_buffer) - { - sscanf(strchr(line_buffer,'=')+1,"%d",&paging); - } - if(strstr(line_buffer,"LINESPP=")==line_buffer) - { - sscanf(strchr(line_buffer,'=')+1,"%d",&MAX_FUNCS); - } - if(strstr(line_buffer,"WIDTH=")==line_buffer) - { - sscanf(strchr(line_buffer,'=')+1,"%d",&ixw); - } - if(strstr(line_buffer,"HIGHT=")==line_buffer) - { - sscanf(strchr(line_buffer,'=')+1,"%d",&iyw); - } - if(strstr(line_buffer,"TIMESERVICE=")==line_buffer) - { - strcpy(url,strchr(line_buffer,'=')+1); - if(strstr(url,"NONE") || strlen(url)<4) - { - *url=0; - } - } - } - } -//printf("Check_Config: Level: %d -> %s\n",level,line_buffer); - } - rv=0; - fclose(fstr.fh[fstr.fnum]); - } - FSIZE_BIG=(FSIZE_MED*5)/4; - FSIZE_SMALL=(FSIZE_MED*4)/5; - TABULATOR=2*FSIZE_MED; - ixw=(ixw>(ex-sx))?(ex-sx):((ixw<400)?400:ixw); - iyw=(iyw>(ey-sy))?(ey-sy):((iyw<380)?380:iyw); - return rv; -} - -int Clear_List(MENU *m, int mode) -{ -int i; -PLISTENTRY entr; - - if(m->menact) - { - free(m->menact); - m->menact=NULL; - } - if(m->menactdep) - { - free(m->menactdep); - m->menactdep=NULL; - } - if(m->max_entrys) - { - for(i=0; inum_entrys; i++) - { - if(m->list[i]->entry) free(m->list[i]->entry); - if(m->list[i]->message) free(m->list[i]->message); - free(m->list[i]); - } - m->num_entrys=0; - m->max_entrys=0; - m->num_active=0; - m->list=NULL; - } - switch(mode) - { - case 0: return 0; - - case 1: - - if((m->list=calloc(LIST_STEP,sizeof(PLISTENTRY)))==NULL) - { - printf(NOMEM); - return -1; - } - - for(i=0; ilist[i]=entr; - } - m->max_entrys=LIST_STEP; - break; - - case -1: - if(m->num_headers && m->headertxt) - { - for(i=0; inum_headers; i++) - { - free(m->headertxt[i]); - } - m->num_headers=0; - m->list=NULL; - } - if(m->headertxt) - { - free(m->headertxt); - m->headertxt=NULL; - } - break; - } - return 0; -} - -int Get_Selection(MENU *m) -{ -int rv=1,rccode, mloop=1,i,j,first,last,active,knew=1; -time_t tm1,tm2; - - if(m->num_active) - { - i=m->act_entry; - while((i>=0) && ((m->list[i]->type==TYP_COMMENT) || (m->list[i]->type==TYP_INACTIVE))) - { - ++i; - if(i>=m->num_entrys) - { - i=-1; - } - } - if(i==-1) - { - i=0; - } - m->act_entry=i; - } - time(&tm1); - do{ -// usleep(100000L); - first=(paging)?0:(MAX_FUNCS*(int)(m->act_entry/MAX_FUNCS)); - last=(paging)?(m->num_entrys-1):(MAX_FUNCS*(int)(m->act_entry/MAX_FUNCS)+MAX_FUNCS-1); - if(last>=m->num_entrys) - { - last=m->num_entrys-1; - } - - active=0; - for(i=first; i<=last && !active; i++) - { - active |= ((m->list[i]->type != TYP_COMMENT) && (m->list[i]->type != TYP_INACTIVE)); - } - - rccode=-1; - if(knew) - { - ShowInfo(m, knew); - } - knew=1; - switch(rccode = GetRCCode()) - { - case RC_RED: - if(active && direct[0]>=0) - { - m->act_entry=direct[0]; - rv=1; - mloop=0; - } - break; - - case RC_GREEN: - if(active && direct[1]>=0) - { - m->act_entry=direct[1]; - rv=1; - mloop=0; - } - break; - - case RC_YELLOW: - if(active && direct[2]>=0) - { - m->act_entry=direct[2]; - rv=1; - mloop=0; - } - break; - - case RC_BLUE: - if(active && direct[3]>=0) - { - m->act_entry=direct[3]; - rv=1; - mloop=0; - } - break; - - case RC_1: - if(active && direct[4]>=0) - { - m->act_entry=direct[4]; - rv=1; - mloop=0; - } - break; - - case RC_2: - if(active && direct[5]>=0) - { - m->act_entry=direct[5]; - rv=1; - mloop=0; - } - break; - - case RC_3: - if(active && direct[6]>=0) - { - m->act_entry=direct[6]; - rv=1; - mloop=0; - } - break; - - case RC_4: - if(active && direct[7]>=0) - { - m->act_entry=direct[7]; - rv=1; - mloop=0; - } - break; - - case RC_5: - if(active && direct[8]>=0) - { - m->act_entry=direct[8]; - rv=1; - mloop=0; - } - break; - - case RC_6: - if(active && direct[9]>=0) - { - m->act_entry=direct[9]; - rv=1; - mloop=0; - } - break; - - case RC_7: - if(active && direct[10]>=0) - { - m->act_entry=direct[10]; - rv=1; - mloop=0; - } - break; - - case RC_8: - if(active && direct[11]>=0) - { - m->act_entry=direct[11]; - rv=1; - mloop=0; - } - break; - - case RC_9: - if(active && direct[12]>=0) - { - m->act_entry=direct[12]; - rv=1; - mloop=0; - } - break; - - case RC_0: - if(active && direct[13]>=0) - { - m->act_entry=direct[13]; - rv=1; - mloop=0; - } - break; - - case RC_UP: - case RC_MINUS: - if(m->num_active) - { - i=m->act_entry-1; - if(ilist[i]->type==TYP_COMMENT) || (m->list[i]->type==TYP_INACTIVE))) - { - --i; - if(iact_entry=i; - } -// knew=1; - break; - - case RC_DOWN: - case RC_PLUS: - if(m->num_active) - { - i=m->act_entry+1; - if(i>last) - { - i=first; - } - while(active && ((m->list[i]->type==TYP_COMMENT) || (m->list[i]->type==TYP_INACTIVE))) - { - ++i; - if(i>last) - { - i=first; - } - } - m->act_entry=i; - } -// knew=1; - break; - - case RC_PAGEUP: - i=MAX_FUNCS*(m->act_entry/MAX_FUNCS)-MAX_FUNCS; - if(i<0) - { - i=MAX_FUNCS*((m->num_entrys-1)/MAX_FUNCS); - } - j=0; - while((m->list[i+j]->type==TYP_COMMENT || m->list[i+j]->type==TYP_INACTIVE) && active && (i+j)<=(last+MAX_FUNCS) && (i+j)num_entrys) - { - ++j; - } - if((i+j)<=(last+MAX_FUNCS) && (i+j)num_entrys) - { - i+=j; - } - m->act_entry=i; - break; - - case RC_PAGEDOWN: - i=MAX_FUNCS*(m->act_entry/MAX_FUNCS)+MAX_FUNCS; - if(i>=m->num_entrys) - { - i=0; - } - j=0; - while((m->list[i+j]->type==TYP_COMMENT || m->list[i+j]->type==TYP_INACTIVE) && active && (i+j)<=(last+MAX_FUNCS) && (i+j)num_entrys) - { - ++j; - } - if((i+j)<=(last+MAX_FUNCS) && (i+j)num_entrys) - { - i+=j; - } - m->act_entry=i; - break; - - case RC_OK: - if(m->num_active) - { - rv=1; - mloop=0; - } - break; - - case -1: - knew=0; - time(&tm2); - if((tm2-tm1)num_entrys>=m->max_entrys) - { - if((m->list=realloc(m->list,(m->max_entrys+LIST_STEP)*sizeof(PLISTENTRY)))==NULL) - { - printf(NOMEM); - Clear_List(m,0); - free(wstr); - return 0; - } - for(i=m->num_entrys; inum_entrys+LIST_STEP; i++) - { - if((entr=calloc(1,sizeof(LISTENTRY)))==NULL) - { - printf(NOMEM); - Clear_List(m,0); - free(wstr); - return -1; - } - m->list[i]=entr; - } - m->max_entrys+=LIST_STEP; - } - - entr=m->list[m->num_entrys]; - entr->underline=entr->stay=entr->showalways=0; - - for(i=TYP_MENU; !found && i<=TYP_SHELLRESOFF; i++) - { - ptr4=NULL; - if((ptr1=strstr(wstr,TYPESTR[i]))==wstr) - { - ptr1=strchr(wstr,'='); - ptr1++; - ptr2=ptr1; - while(*ptr2 && ((*ptr2=='*') || (*ptr2=='&') || (*ptr2=='§') || (*ptr2=='+') || (*ptr2=='-') || (*ptr2=='!') || (*ptr2=='_'))) - { - switch(*ptr2) - { - case '*': entr->underline=1; break; - case '!': entr->underline=2; break; - case '+': entr->showalways=1; break; - case '-': entr->showalways=2; break; - case '&': entr->stay=1; break; - case '§': entr->stay=2; break; - } - while(*(++ptr2)) - { - *(ptr2-1)=*ptr2; - } - *(ptr2-1)=0; - ptr2=ptr1; - } - switch (i) - { - case TYP_EXECUTE: - case TYP_MENUDON: - case TYP_MENUDOFF: - case TYP_MENUFON: - case TYP_MENUFOFF: - if((ptr2=strxchr(ptr1,','))!=NULL) - { - if((ptr4=strstr(ptr1,",ICON="))!=NULL) - { - *ptr4=0; - } - if((ptr4=strxchr(ptr2+1,','))!=NULL) - { - *ptr4=0; - entr->message=strdup(ptr4+1); - } - } - break; - - case TYP_MENU: - if((ptr2=strstr(ptr1,",ICON="))!=NULL) - { - *ptr2=0; - } - if((ptr2=strxchr(ptr1,','))!=NULL) - { - *ptr2=0; - entr->message=strdup(ptr2+1); - } - break; - } - switch (i) - { - case TYP_EXECUTE: - case TYP_MENU: - case TYP_COMMENT: - entr->type=i; - entr->entry=strdup(ptr1); - entr->headerpos=pos; - m->num_entrys++; - found=1; - break; - - case TYP_DEPENDON: - case TYP_DEPENDOFF: - case TYP_MENUDON: - case TYP_MENUDOFF: - case TYP_FILCONTON: - case TYP_FILCONTOFF: - case TYP_MENUFON: - case TYP_MENUFOFF: - if((ptr2=strstr(ptr1,",ICON="))!=NULL) - { - *ptr2=0; - } - if((ptr2=strxchr(ptr1,','))!=NULL) - { - if(itype=(ientry=strdup(ptr1); - if(ptr4) - { - entr->message=strdup(ptr4+1); - } - entr->headerpos=pos; - m->num_entrys++; - } - else - { - if(entr->showalways) - { - entr->type=TYP_INACTIVE; - entr->entry=strdup(ptr1); - entr->headerpos=pos; - m->num_entrys++; - } - } - } - } - break; - - case TYP_SHELLRESON: - case TYP_SHELLRESOFF: - case TYP_MENUSON: - case TYP_MENUSOFF: - if((ptr2=strstr(ptr1,",ICON="))!=NULL) - { - *ptr2=0; - } - if((ptr2=strxchr(ptr1,','))!=NULL) - { - if(itype=(ientry=strdup(ptr1); - if(ptr4) - { - entr->message=strdup(ptr4+1); - } - entr->headerpos=pos; - m->num_entrys++; - } - else - { - if(entr->showalways) - { - entr->type=TYP_INACTIVE; - entr->entry=strdup(ptr1); - entr->headerpos=pos; - m->num_entrys++; - } - } - } - } - break; - } - if(found && (i != TYP_COMMENT) && (i != TYP_INACTIVE)) - { - m->num_active++; - } - } - } - free(wstr); - return !found; - -} - -int Get_Menu(int showwait) -{ -int rv=-1, loop=1, mlevel=0, clevel=0, pos=0; -char *pt1,*pt2; -FSTRUCT fstr; - - if(showwait && menu.headerwait[menu.act_header] && menu.headertxt[menu.act_header]) - { - ShowMessage(menu.headertxt[menu.act_header],"Bitte warten ...",0); - } - Clear_List(&menu,1); - if((fstr.fh[0]=fopen(CFG_FILE,"r"))!=NULL) - { - loop=1; - menu.num_active=0; - fstr.fnum=0; - while((loop==1) && GetLine(line_buffer, BUFSIZE, &fstr)) - { - if(IsMenu(line_buffer)) - { - if(pos==menu.act_header) - { - clevel=menu.headerlevels[pos]; - loop=0; - } - mlevel++; - pos++; - } - else - { - pt1=strstr(line_buffer,TYPESTR[TYP_ENDMENU]); - if(pt1 && (pt1==line_buffer)) - { - mlevel--; - } - } -//printf("Get_Menu: loop: %d, mlevel: %d, pos: %d -> %s\n",loop,mlevel,pos,line_buffer); - } - if(loop) - { - return rv; - } - - --pos; - --mlevel; - loop=1; - while((loop==1) && GetLine(line_buffer, BUFSIZE, &fstr)) - { - if(IsMenu(line_buffer)) - { - pos++; - if(mlevel==clevel) - { - AddListEntry(&menu, line_buffer, pos); - rv=0; - } - mlevel++; - } - pt1=strstr(line_buffer,TYPESTR[TYP_ENDMENU]); - if(pt1 && (pt1==line_buffer)) - { - if(mlevel==clevel) - { - if((pt1=strchr(line_buffer,'='))!=NULL) - { - pt1++; - if((pt2=strxchr(pt1,','))!=NULL) - { - *(pt2++)=0; - menu.menactdep=strdup(pt2); - } - menu.menact=strdup(pt1); - } - - } - mlevel--; - } - else - { - if(mlevel==clevel) - { - AddListEntry(&menu, line_buffer, pos); - rv=0; - } - } - if(mlevelact_entry,tind=m->act_entry, sbw=(m->num_entrys>MAX_FUNCS)?12:0; - char tstr[BUFSIZE], *tptr; - char dstr[BUFSIZE],*lcptr,*lcstr; - int dy, my, moffs, mh, toffs, soffs=4, oldx=startx, oldy=starty, sbar=0, nosel; - PLISTENTRY pl; - - moffs=iyw/(MAX_FUNCS+1); - mh=iyw-moffs; - dy=mh/(MAX_FUNCS+1); - toffs=dy/2; - my=moffs+dy+toffs; - - startx = sx + (((ex-sx) - ixw)/2); - starty = sy + (((ey-sy) - iyw)/2); - - tind=index; - - //frame layout - RenderBox(0, 0, ixw, iyw, radius, CMC); - - // titlebar - RenderBox(0, 0, ixw, moffs+5, radius, CMH); - - for(loop=MAX_FUNCS*(index/MAX_FUNCS); loopnum_entrys && !sbar; loop++) - { - pl=m->list[loop]; - sbar |= ((pl->type!=TYP_COMMENT) && (pl->type!=TYP_INACTIVE)); - } - --loop; - if(loop>index) - { - m->act_entry=index=loop; - } - - if(sbw) - { - //sliderframe - RenderBox(ixw-sbw, moffs, ixw, iyw, radius, COL_MENUCONTENT_PLUS_1); - //slider - scrollbar_len = (double)mh / (double)((m->num_entrys/MAX_FUNCS+1)*MAX_FUNCS); - scrollbar_ofs = scrollbar_len*(double)((index/MAX_FUNCS)*MAX_FUNCS); - scrollbar_cor = scrollbar_len*(double)MAX_FUNCS; - RenderBox(ixw-sbw, moffs + scrollbar_ofs, ixw, moffs + scrollbar_ofs + scrollbar_cor , radius, COL_MENUCONTENT_PLUS_3); - } - - // Title text - lcstr=strdup(m->headertxt[m->act_header]); - clean_string(m->headertxt[m->act_header],lcstr); - RenderString(lcstr, (m->headermed[m->act_header]==1)?0:45, dy-soffs+2+FSIZE_BIG/10, ixw-sbw-((m->headermed[m->act_header]==1)?0:45) , (m->headermed[m->act_header]==1)?CENTER:LEFT, FSIZE_BIG, CMHT); - free(lcstr); - - if(m->icon[m->act_header]) - { -// PaintIcon(m->icon[m->act_header],xoffs-6,soffs+2,1); - } - - index /= MAX_FUNCS; - dloop=0; - ldy=dy; - //Show table of commands - for(loop = index*MAX_FUNCS; (loop < (index+1)*MAX_FUNCS) && (loop < m->num_entrys); ++loop) - { - dy=ldy; - pl=m->list[loop]; - strcpy(dstr,pl->entry); - if((tptr=strxchr(dstr,','))!=NULL) - { - if(pl->type != TYP_COMMENT) - { - *tptr=0; - } - } - lcptr=tptr=dstr; - while(*tptr) - { - if(*tptr==0x27) - { - memmove(tptr,tptr+1,strlen(tptr)); - } - ++tptr; - } - - if(m->num_active && sbar && (loop==m->act_entry)) - { - RenderBox(2, my+soffs-dy, ixw-sbw, my+soffs, radius, CMCS); - } - nosel=(pl->type==TYP_COMMENT) || (pl->type==TYP_INACTIVE); - if(!(pl->type==TYP_COMMENT && pl->underline==2)) - { - RenderString(dstr, 45, my, ixw-sbw-65, LEFT, (pl->type==TYP_COMMENT)?SMALL:MED, (((loop%MAX_FUNCS) == (tind%MAX_FUNCS)) && (sbar) && (!nosel))?CMCST:(nosel)?CMCIT:CMCT); - } - if(pl->type==TYP_MENU) - { - RenderString(">", 30, my, 65, LEFT, MED, (((loop%MAX_FUNCS) == (tind%MAX_FUNCS)) && (sbar) && (!nosel))?CMCST:CMCT); - } - if(pl->underline) - { - int cloffs=0,ccenter=0; - if(pl->type==TYP_COMMENT) - { - if(strlen(dstr)==0) - { - if(pl->underline==2) - { - dy/=2; - cloffs=4*dy/3; - } - else - { - cloffs=dy/3; - } - } - else - { - if(pl->underline==2) - { - cloffs=dy/3; - ccenter=1; - } - } - } - else - { - if(pl->underline==2) - { - dy+=dy/2; - cloffs=-dy/4; - } - } - if(ccenter) - { - RenderBox(xoffs, my+soffs-cloffs+2, ixw-10-sbw, my+soffs-cloffs+3, 0, CMS); - RenderBox(xoffs, my+soffs-cloffs+1, ixw-10-sbw, my+soffs-cloffs+2, 0, CMCIT); - stlen=GetStringLen(xoffs, dstr, MED); - RenderBox(xoffs+(ixw-xoffs-sbw)/2-stlen/2, my+soffs-ldy, xoffs+(ixw-xoffs-sbw)/2+stlen/2+15, my+soffs, FILL, CMC); - RenderString(dstr, xoffs, my, ixw-sbw, CENTER, MED, CMCIT); - } - else - { - RenderBox(xoffs, my+soffs-cloffs+2, ixw-xoffs-sbw, my+soffs-cloffs+3, 0, CMS); - RenderBox(xoffs, my+soffs-cloffs+1, ixw-xoffs-sbw, my+soffs-cloffs+2, 0, CMCIT); - } - } - if((pl->type!=TYP_COMMENT) && ((pl->type!=TYP_INACTIVE) || (pl->showalways==2))) - { - direct[dloop++]=(pl->type!=TYP_INACTIVE)?loop:-1; - switch(dloop) - { - - case 1: RenderCircle(xoffs+1,my-15,RED); break; - case 2: RenderCircle(xoffs+1,my-15,GREEN); break; - case 3: RenderCircle(xoffs+1,my-15,YELLOW); break; - case 4: RenderCircle(xoffs+1,my-15,BLUE0); break; -/* - case 1: PaintIcon("/share/tuxbox/neutrino/icons/rot.raw",xoffs-2,my-15,1); break; - case 2: PaintIcon("/share/tuxbox/neutrino/icons/gruen.raw",xoffs-2,my-15,1); break; - case 3: PaintIcon("/share/tuxbox/neutrino/icons/gelb.raw",xoffs-2,my-15,1); break; - case 4: PaintIcon("/share/tuxbox/neutrino/icons/blau.raw",xoffs-2,my-15,1); break; -*/ - default: - if(dloop<15) - { - sprintf(tstr,"%1d",(dloop-4)%10); - RenderString(tstr, xoffs, my-1, 15, CENTER, SMALL, ((loop%MAX_FUNCS) == (tind%MAX_FUNCS))?CMCST:((pl->type==TYP_INACTIVE)?CMCIT:CMCT)); - } - break; - } - } - my += dy; - } - dy=ldy; - for(; dloopnum_active && knew) - { - if(m->list[m->act_entry]->entry) - { - sprintf(trstr,"%s%s",(m->list[m->act_entry]->type<=TYP_MENUSOFF)?"> ":"",m->list[m->act_entry]->entry); - if((lcptr=strxchr(trstr,','))!=NULL) - { - *lcptr=0; - } - } - else - { - sprintf(trstr,"Kein Eintrag"); - } - - if(vfd) - { - lcstr=strdup(trstr); - clean_string(trstr,lcstr); - sprintf(tstr,"%s -t\"%s\"",VFD,lcstr); - system(tstr); - free(lcstr); - } - } - - startx=oldx; - starty=oldy; -} - - -int Menu_Up(MENU *m) -{ -int llev=m->headerlevels[m->act_header], lmen=m->act_header, lentr=m->lastheaderentrys[m->act_header]; - - if(m->menact) - { - OnMenuClose(m->menact,m->menactdep); - } - while((lmen>=0) && (m->headerlevels[lmen]>=llev)) - { - --lmen; - } - if(lmen<0) - { - return 0; - } - m->act_header=lmen; - Get_Menu(1); - m->act_entry=lentr; - - return 1; -} - - -/****************************************************************************** - * shellexec Main - ******************************************************************************/ - -int main (int argc, char **argv) -{ -int index=0,cindex=0,mainloop=1,dloop=1,tv, spr; -char tstr[BUFSIZE], *rptr; -PLISTENTRY pl; - - printf("shellexec Version %.2f\n",SH_VERSION); - for(tv=1; tv=0) - tr[index]=255-(float)tv*2.55; - - sprintf(trstr,"menu_%s_blue",menucoltxt[index]); - if((tv=Read_Neutrino_Cfg(trstr))>=0) - bl[index]=(float)tv*2.55; - - sprintf(trstr,"menu_%s_green",menucoltxt[index]); - if((tv=Read_Neutrino_Cfg(trstr))>=0) - gn[index]=(float)tv*2.55; - - sprintf(trstr,"menu_%s_red",menucoltxt[index]); - if((tv=Read_Neutrino_Cfg(trstr))>=0) - rd[index]=(float)tv*2.55; - } - - cindex=CMC; - for(index=COL_MENUCONTENT_PLUS_0; index<=COL_MENUCONTENT_PLUS_3; index++) - { - rd[index]=rd[cindex]+25; - gn[index]=gn[cindex]+25; - bl[index]=bl[cindex]+25; - tr[index]=tr[cindex]; - cindex=index; - } - - fb = open(FB_DEVICE, O_RDWR); - if(fb == -1) - { - perror("shellexec "); - exit(1); - } - - InitRC(); -// InitVFD(); - - //init framebuffer - - if(ioctl(fb, FBIOGET_FSCREENINFO, &fix_screeninfo) == -1) - { - perror("shellexec \n"); - return -1; - } - if(ioctl(fb, FBIOGET_VSCREENINFO, &var_screeninfo) == -1) - { - perror("shellexec \n"); - return -1; - } - if(!(lfb = (unsigned char*)mmap(0, fix_screeninfo.smem_len, PROT_READ | PROT_WRITE, MAP_SHARED, fb, 0))) - { - perror("shellexec \n"); - return -1; - } - - //init fontlibrary - - if((error = FT_Init_FreeType(&library))) - { - printf("shellexec ", error); - munmap(lfb, fix_screeninfo.smem_len); - return -1; - } - - if((error = FTC_Manager_New(library, 1, 2, 0, &MyFaceRequester, NULL, &manager))) - { - printf("shellexec \n", error); - FT_Done_FreeType(library); - munmap(lfb, fix_screeninfo.smem_len); - return -1; - } - - if((error = FTC_SBitCache_New(manager, &cache))) - { - printf("shellexec \n", error); - FTC_Manager_Done(manager); - FT_Done_FreeType(library); - munmap(lfb, fix_screeninfo.smem_len); - return -1; - } - - memset(&menu,0,sizeof(MENU)); - if(Check_Config()) - { - printf("shellexec Unable to read Config %s\n",CFG_FILE); - FTC_Manager_Done(manager); - FT_Done_FreeType(library); - munmap(lfb, fix_screeninfo.smem_len); - Clear_List(&menu,-1); - free(line_buffer); - return -1; - } - - if((error = FTC_Manager_LookupFace(manager, FONT, &face))) - { - printf("shellexec \n", error); - if((error = FTC_Manager_LookupFace(manager, FONT2, &face))) - { - printf("shellexec \n", error); - FTC_Manager_Done(manager); - FT_Done_FreeType(library); - munmap(lfb, fix_screeninfo.smem_len); - return 2; - } - else - desc.face_id = FONT2; - } - else - desc.face_id = FONT; - printf("shellexec \n", desc.face_id); - - use_kerning = FT_HAS_KERNING(face); - desc.flags = FT_LOAD_MONOCHROME; - - if(Read_Neutrino_Cfg("rounded_corners")>0) - radius=9; - else - radius=0; - - //init backbuffer - - if(!(lbb = malloc(fix_screeninfo.line_length*var_screeninfo.yres))) - { - printf("shellexec \n"); - FTC_Manager_Done(manager); - FT_Done_FreeType(library); - munmap(lfb, fix_screeninfo.smem_len); - return -1; - } - -// lbb=lfb; - memset(lbb, TRANSP, fix_screeninfo.line_length*var_screeninfo.yres); - memcpy(lfb, lbb, fix_screeninfo.line_length*var_screeninfo.yres); - startx = sx + (((ex-sx) - (fix_screeninfo.line_length-200))/2); - starty = sy + (((ey-sy) - (var_screeninfo.yres-150))/2); - - - - index=0; - if(vfd) - { - sprintf(tstr,"%s -c", VFD); - system(tstr); - } - ShowInfo(&menu, 1); - //main loop - menu.act_entry=0; - if(Get_Menu(1)) - { - printf("ShellExec \n"); - FTC_Manager_Done(manager); - FT_Done_FreeType(library); - munmap(lfb, fix_screeninfo.smem_len); - return -1; - } - cindex=0; - signal(SIGINT, quit_signal); - signal(SIGTERM, quit_signal); - signal(SIGQUIT, quit_signal); - - put_instance(instance=get_instance()+1); - - while(mainloop) - { - cindex=Get_Selection(&menu); - dloop=1; - switch(cindex) - { - case -1: - mainloop=0; - break; - - case 0: - mainloop=Menu_Up(&menu); - break; - - case 1: - pl=menu.list[menu.act_entry]; - switch (pl->type) - { - case TYP_MENU: - menu.act_header=pl->headerpos; - menu.lastheaderentrys[menu.act_header]=menu.act_entry; - menu.headerwait[menu.act_header]=pl->message!=NULL; - if(menu.headerwait[menu.act_header]) - { - strcpy(tstr,pl->entry); - if((rptr=strxchr(tstr,','))!=NULL) - { - *rptr=0; - } - ShowMessage(tstr, pl->message, 0); - } - Get_Menu(0); - menu.act_entry=0; - break; - - case TYP_EXECUTE: - if((rptr=strxchr(pl->entry,','))!=NULL) - { - strcpy(tstr,pl->entry); - rptr=strxchr(tstr,','); - *rptr=0; - rptr=strxchr(pl->entry,','); - rptr++; - if(pl->stay) - { - if(pl->stay==1) - { - if(pl->message) - { - if(strlen(pl->message)) - { - ShowMessage(tstr, pl->message, 0); - } - } - else - { - ShowMessage(tstr, "Bitte warten", 0); - } - } - else - { - memset(lbb, TRANSP, fix_screeninfo.line_length*var_screeninfo.yres); - memcpy(lfb, lbb, fix_screeninfo.line_length*var_screeninfo.yres); - } - - if(*(rptr+strlen(rptr)-1)=='&') - { - *(rptr+strlen(rptr)-1)=0; - } - } - else - { - if(*(rptr+strlen(rptr)-1)!='&') - { - sprintf(tstr,"%s &",rptr); - rptr=tstr; - } - } - system(rptr); - - mainloop= pl->stay==1; - if(pl->stay==1) - { - Get_Menu(1); - } - } - break; - } - } - } - - //cleanup - - Clear_List(&menu,-1); - - FTC_Manager_Done(manager); - FT_Done_FreeType(library); -/* if(strlen(url)) - { - sprintf(line_buffer,"/sbin/rdate -s %s > /dev/null &",url); - system(line_buffer); - } -*/ - CloseRC(); -// CloseVFD(); - - free(line_buffer); - free(trstr); - - // clear Display - memset(lbb, TRANSP,fix_screeninfo.line_length*var_screeninfo.yres); - memcpy(lfb, lbb, fix_screeninfo.line_length*var_screeninfo.yres); - munmap(lfb, fix_screeninfo.smem_len); - - close(fb); - free(lbb); - - put_instance(get_instance()-1); - - return 0; -} - diff --git a/archive-sources/shellexec/shellexec.cfg b/archive-sources/shellexec/shellexec.cfg deleted file mode 100755 index a2fcdbb..0000000 --- a/archive-sources/shellexec/shellexec.cfg +++ /dev/null @@ -1,7 +0,0 @@ -type=2 -name=Shellexec Menue -desc=Variables Bildschirmmenue -needfb=1 -needlcd=1 -needrc=1 -needoffsets=1 diff --git a/archive-sources/shellexec/shellexec.conf b/archive-sources/shellexec/shellexec.conf deleted file mode 100755 index add6b30..0000000 --- a/archive-sources/shellexec/shellexec.conf +++ /dev/null @@ -1,10 +0,0 @@ -WIDTH=600 -HIGHT=500 -FONT=/share/fonts/micron_bold.ttf -FONTSIZE=24 -LINESPP=16 -PAGING=1 - -MENU=Flexmen~u - COMMENT=Leer -ENDMENU diff --git a/archive-sources/shellexec/shellexec.h b/archive-sources/shellexec/shellexec.h deleted file mode 100755 index 99e482b..0000000 --- a/archive-sources/shellexec/shellexec.h +++ /dev/null @@ -1,163 +0,0 @@ -#ifndef __shellexec_H__ - -#define __shellexec_H__ - - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include FT_FREETYPE_H -#include FT_CACHE_H -#include FT_CACHE_SMALL_BITMAPS_H - -#define NCF_FILE "/var/tuxbox/config/neutrino.conf" - -//rc codes - -#undef KEY_EPG -#undef KEY_SAT -#undef KEY_STOP -#undef KEY_PLAY - -#define KEY_1 2 -#define KEY_2 3 -#define KEY_3 4 -#define KEY_4 5 -#define KEY_5 6 -#define KEY_6 7 -#define KEY_7 8 -#define KEY_8 9 -#define KEY_9 10 -#define KEY_BACKSPACE 14 -#define KEY_UP 103 -#define KEY_LEFT 105 -#define KEY_RIGHT 106 -#define KEY_DOWN 108 -#define KEY_MUTE 113 -#define KEY_VOLUMEDOWN 114 -#define KEY_VOLUMEUP 115 -#define KEY_POWER 116 -#define KEY_HELP 138 -#define KEY_HOME 102 -#define KEY_EXIT 174 -#define KEY_SETUP 141 -#define KEY_PAGEUP 104 -#define KEY_PAGEDOWN 109 -#define KEY_OK 0x160 -#define KEY_RED 0x18e -#define KEY_GREEN 0x18f -#define KEY_YELLOW 0x190 -#define KEY_BLUE 0x191 - -#define KEY_TVR 0x179 -#define KEY_TTX 0x184 -#define KEY_COOL 0x1A1 -#define KEY_FAV 0x16C -#define KEY_EPG 0x16D -#define KEY_VF 0x175 - -#define KEY_SAT 0x17D -#define KEY_SKIPP 0x197 -#define KEY_SKIPM 0x19C -#define KEY_TS 0x167 -#define KEY_AUDIO 0x188 -#define KEY_REW 0x0A8 -#define KEY_FWD 0x09F -#define KEY_HOLD 0x077 -#define KEY_REC 0x0A7 -#define KEY_STOP 0x080 -#define KEY_PLAY 0x0CF - -#define RC_0 0x00 -#define RC_1 0x01 -#define RC_2 0x02 -#define RC_3 0x03 -#define RC_4 0x04 -#define RC_5 0x05 -#define RC_6 0x06 -#define RC_7 0x07 -#define RC_8 0x08 -#define RC_9 0x09 -#define RC_PAGEDOWN 0x0A -#define RC_PAGEUP 0x0B -#define RC_UP 0x0C -#define RC_DOWN 0x0D -#define RC_OK 0x0E -#define RC_MUTE 0x0F -#define RC_STANDBY 0x10 -#define RC_GREEN 0x11 -#define RC_YELLOW 0x12 -#define RC_RED 0x13 -#define RC_BLUE 0x14 -#define RC_PLUS 0x15 -#define RC_MINUS 0x16 -#define RC_HELP 0x17 -#define RC_DBOX 0x18 -#define RC_HOME 0x1F - -//freetype stuff - -enum {LEFT, CENTER, RIGHT}; -enum {SMALL, MED, BIG}; - -FT_Error error; -FT_Library library; -FTC_Manager manager; -FTC_SBitCache cache; -FTC_SBit sbit; -#if FREETYPE_MAJOR == 2 && FREETYPE_MINOR == 0 -FTC_Image_Desc desc; -#else -FTC_ImageTypeRec desc; -#endif -FT_Face face; -FT_UInt prev_glyphindex; -FT_Bool use_kerning; - -//devs - -int fb, debounce, rblock; - -//framebuffer stuff - -enum {FILL, GRID}; - -enum {CMCST, CMCS, CMCT, CMC, CMCIT, CMCI, CMHT, CMH, WHITE, BLUE0, GTRANSP, CMS, ORANGE, GREEN, YELLOW, RED, COL_MENUCONTENT_PLUS_0, COL_MENUCONTENT_PLUS_1, COL_MENUCONTENT_PLUS_2, COL_MENUCONTENT_PLUS_3}; -#define TRANSP 0 - -extern unsigned char rd[], gn[], bl[], tr[]; -extern unsigned char *lfb, *lbb; - -extern int FSIZE_BIG; -extern int FSIZE_MED; -extern int FSIZE_SMALL; -extern int TABULATOR; - -struct fb_fix_screeninfo fix_screeninfo; -struct fb_var_screeninfo var_screeninfo; - -int startx, starty, sx, ex, sy, ey; -char online; -extern int MAX_FUNCS; -extern int instance; -int get_instance(void); -void put_instance(int pval); - -#define FB_DEVICE "/dev/fb/0" - -int key_count; -unsigned short lastkey; - -#endif \ No newline at end of file diff --git a/archive-sources/shellexec/starter.c b/archive-sources/shellexec/starter.c deleted file mode 100644 index 0d14e1a..0000000 --- a/archive-sources/shellexec/starter.c +++ /dev/null @@ -1,53 +0,0 @@ -/* - * $Id$ - * - * shellexec - d-box2 linux project - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - * -*/ - -#include -#include -#include -#include -#include -#define SCRIPT "shellexec" - -void main() -{ - int ret, pid, status; - pid=fork(); - if (pid == -1) { - fprintf(stderr, "[%s.so] fork\n", SCRIPT); - return; - } else - if (pid == 0) { - fprintf(stderr, "[%s.so] forked, executing %s\n", SCRIPT, SCRIPT); - for (ret=3 ; ret < 255; ret++) - close (ret); - ret = system(SCRIPT); - if (ret) - fprintf(stderr, "[%s.so] script return code: %d (%m)\n", SCRIPT, ret); - else - fprintf(stderr, "[%s.so] script return code: %d\n", SCRIPT, ret); - _exit(ret); - } - fprintf(stderr, "[%s.so] parent, waiting for child with pid %d...\n", SCRIPT, pid); - waitpid(pid, &status, 0); - fprintf(stderr, "[%s.so] parent, waitpid() returned..\n", SCRIPT); - if (WIFEXITED(status)) - fprintf(stderr, "[%s.so] child returned with status %d\n", SCRIPT, WEXITSTATUS(status)); -} diff --git a/archive-sources/shellexec/text.c b/archive-sources/shellexec/text.c deleted file mode 100644 index e6a917b..0000000 --- a/archive-sources/shellexec/text.c +++ /dev/null @@ -1,403 +0,0 @@ -#include "text.h" -#include "gfx.h" -#include "io.h" - -int FSIZE_BIG=28; -int FSIZE_MED=24; -int FSIZE_SMALL=20; -int TABULATOR=72; - -static unsigned sc[8]={'a','o','u','A','O','U','z','d'}, tc[8]={'ä','ö','ü','Ä','Ö','Ü','ß','°'}, su[7]={0xA4,0xB6,0xBC,0x84,0x96,0x9C,0x9F}; - -void TranslateString(char *src) -{ -int i,found,quota=0; -char rc,*rptr=src,*tptr=src; - - while(*rptr != '\0') - { - if(*rptr=='\'') - { - quota^=1; - } - if(!quota && *rptr=='~') - { - ++rptr; - rc=*rptr; - found=0; - for(i=0; i\n", (char*)face_id); - - return result; -} - -/****************************************************************************** -* RenderChar -******************************************************************************/ - -int RenderChar(FT_ULong currentchar, int sx, int sy, int ex, int color) -{ - // unsigned char pix[4]={oldcmap.red[col],oldcmap.green[col],oldcmap.blue[col],oldcmap.transp[col]}; - // unsigned char pix[4]={0x80,0x80,0x80,0x80}; - unsigned char pix[4]={bl[color],gn[color],rd[color],tr[color]}; - int row, pitch, bit, x = 0, y = 0; - FT_UInt glyphindex; - FT_Vector kerning; - FT_Error error; - - currentchar=currentchar & 0xFF; - - //load char - - if(!(glyphindex = FT_Get_Char_Index(face, (int)currentchar))) - { - // printf("msgbox \n", (int)currentchar, error); - return 0; - } - - // no kerning used - /* - if(use_kerning) - { - FT_Get_Kerning(face, prev_glyphindex, glyphindex, ft_kerning_default, &kerning); - - prev_glyphindex = glyphindex; - kerning.x >>= 6; -} -else - */ - kerning.x = 0; - -//render char - -if(color != -1) /* don't render char, return charwidth only */ -{ - if(sx + sbit->xadvance >= ex) return -1; /* limit to maxwidth */ - - for(row = 0; row < sbit->height; row++) - { - for(pitch = 0; pitch < sbit->pitch; pitch++) - { - for(bit = 7; bit >= 0; bit--) - { - if(pitch*8 + 7-bit >= sbit->width) break; /* render needed bits only */ - - if((sbit->buffer[row * sbit->pitch + pitch]) & 1<left + kerning.x + x)*4 + fix_screeninfo.line_length*(starty + sy - sbit->top + y),pix,4); - - x++; - } - } - - x = 0; - y++; - } - -} - -//return charwidth - -return sbit->xadvance + kerning.x; -} - -/****************************************************************************** - * GetStringLen - ******************************************************************************/ - -int GetStringLen(int sx, unsigned char *string, int size) -{ - int i, found; - int stringlen = 0; - - //reset kerning - - prev_glyphindex = 0; - - //calc len - - switch (size) - { - case SMALL: desc.width = desc.height = FSIZE_SMALL; break; - case MED: desc.width = desc.height = FSIZE_MED; break; - case BIG: desc.width = desc.height = FSIZE_BIG; break; - default: desc.width = desc.height = size; break; - } - - while(*string != '\0') - { - if(*string != '~') - { - stringlen += RenderChar(*string, -1, -1, -1, -1); - } - else - { - string++; - if(*string=='t') - { - stringlen=desc.width+TABULATOR*((int)(stringlen/TABULATOR)+1); - } - else - { - if(*string=='T') - { - if(sscanf(string+1,"%4d",&i)==1) - { - string+=4; - stringlen=i-sx; - } - } - else - { - found=0; - for(i=0; i maxwidth */ - sx += charwidth; - } - rptr++; - } -} - -/****************************************************************************** - * ShowMessage - ******************************************************************************/ - -void remove_tabs(char *src) -{ -int i; -char *rmptr, *rmstr, *rmdptr; - - if(src && *src) - { - rmstr=strdup(src); - rmdptr=rmstr; - rmptr=src; - while(*rmptr) - { - if(*rmptr=='~') - { - ++rmptr; - if(*rmptr) - { - if(*rmptr=='t') - { - *(rmdptr++)=' '; - } - else - { - if(*rmptr=='T') - { - *(rmdptr++)=' '; - i=4; - while(i-- && *(rmptr++)); - } - } - ++rmptr; - } - } - else - { - *(rmdptr++)=*(rmptr++); - } - } - *rmdptr=0; - strcpy(src,rmstr); - free(rmstr); - } -} - -void ShowMessage(char *mtitle, char *message, int wait) -{ - extern int radius; - int ixw=400; - int lx=startx/*, ly=starty*/; - char *tdptr; - - startx = sx + (((ex-sx) - ixw)/2); -// starty=sy; - - //layout - - RenderBox(0, 178, ixw, 327, radius, CMH); - RenderBox(2, 180, ixw-4, 323, radius, CMC); - RenderBox(0, 178, ixw, 220, radius, CMH); - - //message - - tdptr=strdup(mtitle); - remove_tabs(tdptr); - RenderString(tdptr, 2, 213, ixw, CENTER, FSIZE_BIG, CMHT); - free(tdptr); - tdptr=strdup(message); - remove_tabs(tdptr); - RenderString(tdptr, 2, 270, ixw, CENTER, FSIZE_MED, CMCT); - free(tdptr); - - if(wait) - { - RenderBox(ixw/2-25, 286, ixw/2+25, 310, radius, CMCS); - RenderString("OK", ixw/2-25, 305, 50, CENTER, FSIZE_MED, CMCT); - } - memcpy(lfb, lbb, fix_screeninfo.line_length*var_screeninfo.yres); - - while(wait && (GetRCCode() != RC_OK)); - - startx=lx; -// starty=ly; - -} - diff --git a/archive-sources/shellexec/text.h b/archive-sources/shellexec/text.h deleted file mode 100755 index a7b2604..0000000 --- a/archive-sources/shellexec/text.h +++ /dev/null @@ -1,18 +0,0 @@ -#ifndef __TEXT_H__ - -#define __TEXT_H__ - -#include "shellexec.h" - -extern int FSIZE_BIG; -extern int FSIZE_MED; -extern int FSIZE_SMALL; - -void TranslateString(char *src); -int GetStringLen(int sx, unsigned char *string, int size); -FT_Error MyFaceRequester(FTC_FaceID face_id, FT_Library library, FT_Pointer request_data, FT_Face *aface); -void RenderString(char *string, int sx, int sy, int maxwidth, int layout, int size, int color); -void ShowMessage(char *mtitle, char *message, int wait); -void remove_tabs(char *src); - -#endif diff --git a/archive-sources/tuxcal/daemon/tuxcald.c b/archive-sources/tuxcal/daemon/tuxcald.c deleted file mode 100755 index 71d84b6..0000000 --- a/archive-sources/tuxcal/daemon/tuxcald.c +++ /dev/null @@ -1,2557 +0,0 @@ -/****************************************************************************** - * <<< TuxCal - Calendar daemon >>> - * (c) Robert "robspr1" Spreitzer 2006 (robert.spreitzer@inode.at) - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - * - *----------------------------------------------------------------------------- - * $Log: tuxcald.c,v $ - * Revision 1.12 2007/05/17 16:19:46 dbluelle - * Make plugins compile with freeetype 2.1.x on dreambox (as needed for Neutrino on Dreambox) - * - * Revision 1.11 2007/02/11 11:01:37 robspr1 - * - bugfix for showing/hiding the clock - * - * Revision 1.10 2007/01/07 11:51:22 robspr1 - * - execute tuxcal.notify on new events - * - * Revision 1.09 2007/01/06 16:38:59 robspr1 - * - accept unknown chunks in wave header - * - * Revision 1.08 2007/01/01 19:28:06 robspr1 - * -bugfix showing actual event, hiding mail-clock - * - * Revision 1.07 2006/02/24 08:14:49 robspr1 - * - hide clock if file-controlled - * - * Revision 1.06 2006/02/23 23:08:41 robspr1 - * - signal up to 5 days, toggle clock-display file - * - * Revision 1.05 2006/02/18 14:57:46 robspr1 - * add signaling at fixed times, some small fixes - * - * Revision 1.04 2006/02/17 21:30:22 robspr1 - * -add command to switch/hide the clock, move the startdelay-command - * - * Revision 1.03 2006/02/15 22:05:26 robspr1 - * bugfix: showed today for all days - * - * Revision 1.02 2006/02/15 19:17:28 robspr1 - * first version in CVS - * - * Revision 1.01 2006/02/12 23:10:00 robspr1 - * - bugfix reading params POS_X and POS_Y - * - * Revision 1.00 2006/02/06 20:00:00 robspr1 - * - first version - * - ******************************************************************************/ -// lots of code is from the tuxmail-project - -#include "tuxcald.h" - -/****************************************************************************** - * ReadConf - ******************************************************************************/ -/*! - * read configuration-file - - \param : none - \return : none -*/ -void ReadConf() -{ - FILE *fd_conf; - char *ptr; - char line_buffer[256]; - - // open config-file - if (!(fd_conf = fopen(CFGPATH CFGFILE, "r"))) - { - printf("TuxCal \n"); - return; - } - - // read config-file line-by-line - while(fgets(line_buffer, sizeof(line_buffer), fd_conf)) - { - if ((ptr = strstr(line_buffer, "STARTDELAY="))) - { - sscanf(ptr + 11, "%d", &startdelay); - } - else if((ptr = strstr(line_buffer, "INTERVALL="))) - { - sscanf(ptr + 10, "%d", &intervall); - } - else if((ptr = strstr(line_buffer, "LOGGING="))) - { - sscanf(ptr + 8, "%c", &logging); - } - else if((ptr = strstr(line_buffer, "AUDIO="))) - { - sscanf(ptr + 6, "%c", &audio); - } - else if((ptr = strstr(line_buffer, "VIDEO="))) - { - sscanf(ptr + 6, "%d", &video); - } - else if((ptr = strstr(line_buffer, "SIGNAL="))) - { - sscanf(ptr + 7, "%d", &sigtype); - } - else if((ptr = strstr(line_buffer, "SIGMODE="))) - { - sscanf(ptr + 8, "%d", &sigmode); - } - else if((ptr = strstr(line_buffer, "SIGTIME="))) - { - sscanf(ptr + 8, "%s", &sigtime[0]); - } - else if((ptr = strstr(line_buffer, "OSD="))) - { - sscanf(ptr + 4, "%c", &osd); - } - else if((ptr = strstr(line_buffer, "SKIN="))) - { - sscanf(ptr + 5, "%d", &skin); - } - else if((ptr = strstr(line_buffer, "WEBPORT="))) - { - sscanf(ptr + 8, "%d", &webport); - } - else if((ptr = strstr(line_buffer, "WEBUSER="))) - { - sscanf(ptr + 8, "%s", &webuser[0]); - } - else if((ptr = strstr(line_buffer, "WEBPASS="))) - { - sscanf(ptr + 8, "%s", &webpass[0]); - } - else if((ptr = strstr(line_buffer, "POS_X="))) - { - sscanf(ptr + 6, "%d", &startx); - } - else if((ptr = strstr(line_buffer, "POS_Y="))) - { - sscanf(ptr + 6, "%d", &starty); - } - else if((ptr = strstr(line_buffer, "SHOW="))) - { - sscanf(ptr + 5, "%c", &show_clockatstart); - } - else if((ptr = strstr(line_buffer, "DATE="))) - { - sscanf(ptr + 5, "%c", &disp_date); - } - else if((ptr = strstr(line_buffer, "CLOCK="))) - { - sscanf(ptr + 6, "%c", &disp_clock); - } - else if((ptr = strstr(line_buffer, "SEC="))) - { - sscanf(ptr + 4, "%c", &disp_sec); - } - else if((ptr = strstr(line_buffer, "SIZE="))) - { - sscanf(ptr + 5, "%c", &disp_size); - } - else if((ptr = strstr(line_buffer, "COLOR="))) - { - sscanf(ptr + 6, "%d", &disp_color); - } - else if((ptr = strstr(line_buffer, "BACK="))) - { - sscanf(ptr + 5, "%d", &disp_back); - } - else if((ptr = strstr(line_buffer, "DETECT="))) - { - sscanf(ptr + 7, "%d", &disp_detect); - } - else if((ptr = strstr(line_buffer, "MAIL="))) - { - sscanf(ptr + 5, "%c", &disp_mail); - } - } - - // close config-file - fclose(fd_conf); - - // ---------------- - // check config - // on-screen-display german or english - if (osd != 'G' && osd != 'E') - { - printf("TuxCal \n", osd); - osd = 'G'; - } - switch (osd) - { - case 'G': osdidx=0; break; - case 'E': osdidx=1; break; - } - - if (!startdelay) startdelay = 30; // default 30 seconds delay - if (!intervall) intervall = 1; // default check every 1 second - - if ((sigtype<1) || (sigtype>MAXCHECKDAYS)) sigtype=1; // default only this day - if ((sigmode<0) || (sigmode>3)) sigmode=0; // default only events and birthdays - - // we have different skins - if (skin != 1 && skin != 2 && skin != 3) - { - printf("TuxCal \n", skin); - skin = 1; - } - - switch (disp_size) - { - case 'N': iFontSize=FONTSIZE_NORMAL; iFont=NORMAL; break; - case 'B': iFontSize=FONTSIZE_BIG; iFont=BIG; break; - default: iFontSize=FONTSIZE_SMALL; iFont=SMALL; - } - -} - -/****************************************************************************** - * WriteConf - ******************************************************************************/ -/*! - * write the configuration back to the file - - \param : none - \return : 1:OK 0:FAILED -*/ -int WriteConf() -{ - FILE *fd_conf; - - // open config-file - if (!(fd_conf = fopen(CFGPATH CFGFILE , "w"))) - { - return 0; - } - - fprintf(fd_conf, "STARTDELAY=%d\n", startdelay); - fprintf(fd_conf, "INTERVALL=%d\n", intervall); - fprintf(fd_conf, "LOGGING=%c\n", logging); - fprintf(fd_conf, "AUDIO=%c\n", audio); - fprintf(fd_conf, "VIDEO=%d\n", video); - fprintf(fd_conf, "SIGNAL=%d\n", sigtype); - fprintf(fd_conf, "SIGMODE=%d\n", sigmode); - fprintf(fd_conf, "SIGTIME=%s\n\n", sigtime); - fprintf(fd_conf, "OSD=%c\n", osd); - fprintf(fd_conf, "SKIN=%d\n\n", skin); - fprintf(fd_conf, "WEBPORT=%d\n", webport); - fprintf(fd_conf, "WEBUSER=%s\n", webuser); - fprintf(fd_conf, "WEBPASS=%s\n\n", webpass); - fprintf(fd_conf, "POS_X=%d\n", startx); - fprintf(fd_conf, "POS_Y=%d\n", starty); - fprintf(fd_conf, "SHOW=%c\n", show_clockatstart); - fprintf(fd_conf, "DATE=%c\n", disp_date); - fprintf(fd_conf, "CLOCK=%c\n", disp_clock); - fprintf(fd_conf, "SEC=%c\n", disp_sec); - fprintf(fd_conf, "SIZE=%c\n", disp_size); - fprintf(fd_conf, "COLOR=%d\n", disp_color); - fprintf(fd_conf, "BACK=%d\n", disp_back); - fprintf(fd_conf, "DETECT=%d\n", disp_detect); - fprintf(fd_conf, "MAIL=%c\n\n", disp_mail); - - fclose(fd_conf); - return 1; -} - -/****************************************************************************** - * MyFaceRequester - ******************************************************************************/ -/*! - * load font - - \param face_id : FTC_FaceID - \param library : FT_Library - \param request_data : FT_Pointer - \param afacs : FT_Face* - \return : FT_Error -*/ -FT_Error MyFaceRequester(FTC_FaceID face_id, FT_Library library, FT_Pointer request_data, FT_Face *aface) -{ - FT_Error result; - - result = FT_New_Face(library, face_id, 0, aface); - - if (!result) printf("TuxCal \n", (char*)face_id); - else printf("TuxCal \n", (char*)face_id); - - return result; -} -#if 0 -/****************************************************************************** - * FindColors - ******************************************************************************/ -/*! - * find black and white in the colormap - - \param : none - \return : none -*/ -void FindColors() -{ - int i, l; - __u16 *pR, *pG, *pB, *pT; - __u16 iWmax=0; - - if (colormap == NULL) return; - - pR=colormap->red; - pG=colormap->green; - pB=colormap->blue; - pT=colormap->transp; - - iWhite=-1; - iBlack=-1; - - l=colormap->len; - for (i=0; iiWmax) iWhite=i; - } - -// printf("colormap idx:%d %04x %04x %04x %04x\r\n",i,*pR,*pG,*pB,*pT); - pR++; pG++; pB++; pT++; -// if ((iBlack!=-1) && (iWhite!=-1)) break; - } - printf("TuxCalD \r\n",iBlack, iWhite); - - // free colormap - if (colormap) - { - free(colormap->red); - free(colormap->green); - free(colormap->blue); - free(colormap->transp); - free(colormap); - colormap=NULL; - } -} -#endif -/****************************************************************************** - * OpenFB - ******************************************************************************/ -/*! - * opens the connection to the framebuffer - - \param : none - \return : 1:OK 0:FAILED -*/ -int OpenFB(void) -{ - FT_Error error; - -// colormap=NULL; - - // framebuffer stuff - if ((fbdev = open("/dev/fb/0", O_RDWR))<0) - { - slog ? syslog(LOG_DAEMON | LOG_INFO, "open fb failed"): printf("TuxCalD "); - return 0; - } - - // init framebuffer - if (ioctl(fbdev, FBIOGET_VSCREENINFO, &var_screeninfo)<0) - { - slog ? syslog(LOG_DAEMON | LOG_INFO, "FBIOGET_VSCREENINFO"): printf("TuxCalD "); - close(fbdev); - return 0; - } - - if (ioctl(fbdev, FBIOGET_FSCREENINFO, &fix_screeninfo)<0) - { - slog ? syslog(LOG_DAEMON | LOG_INFO, "FBIOGET_FSCREENINFO"): printf("TuxCalD "); - close(fbdev); - return 0; - } - - if (!(lfb = (unsigned char*)mmap(0, fix_screeninfo.smem_len, PROT_READ | PROT_WRITE, MAP_SHARED, fbdev, 0))) - { - slog ? syslog(LOG_DAEMON | LOG_INFO, "mapping of Framebuffer failed"): printf("TuxCalD \n"); - close(fbdev); - return 0; - } - - // init fontlibrary - if ((error = FT_Init_FreeType(&library))) - { - slog ? syslog(LOG_DAEMON | LOG_INFO, "FT_Init_FreeType failed with Errorcode 0x%.2X", error): printf("TuxCalD ", error); - munmap(lfb, fix_screeninfo.smem_len); - close(fbdev); - return 0; - } - - if ((error = FTC_Manager_New(library, 1, 2, 0, &MyFaceRequester, NULL, &manager))) - { - slog ? syslog(LOG_DAEMON | LOG_INFO, "FTC_Manager_New failed with Errorcode 0x%.2X", error): printf("TuxCalD \n", error); - FT_Done_FreeType(library); - munmap(lfb, fix_screeninfo.smem_len); - close(fbdev); - return 0; - } - - if ((error = FTC_SBitCache_New(manager, &cache))) - { - slog ? syslog(LOG_DAEMON | LOG_INFO, "FTC_SBitCache_New failed with Errorcode 0x%.2X", error): printf("TuxCalD \n", error); - FTC_Manager_Done(manager); - FT_Done_FreeType(library); - munmap(lfb, fix_screeninfo.smem_len); - close(fbdev); - return 0; - } - - if ((error = FTC_Manager_Lookup_Face(manager, FONT, &face))) - { - slog ? syslog(LOG_DAEMON | LOG_INFO, "FTC_Manager_Lookup_Face failed with Errorcode 0x%.2X", error): printf("TuxCalD \n", error); - FTC_Manager_Done(manager); - FT_Done_FreeType(library); - munmap(lfb, fix_screeninfo.smem_len); - close(fbdev); - return 0; - } - - use_kerning = FT_HAS_KERNING(face); - -#ifdef FT_NEW_CACHE_API - desc.face_id = FONT; -#else - desc.font.face_id = FONT; -#endif - -#if FREETYPE_MAJOR == 2 && FREETYPE_MINOR == 0 - desc.type = ftc_image_mono; -#else - desc.flags = FT_LOAD_MONOCHROME; -#endif - - // init backbuffer - if (!( lbb = malloc ( fix_screeninfo.line_length*var_screeninfo.yres ))) - { - slog ? syslog(LOG_DAEMON | LOG_INFO, "allocating of Backbuffer failed"): printf("TuxCalD \n"); - FTC_Manager_Done(manager); - FT_Done_FreeType(library); - munmap(lfb, fix_screeninfo.smem_len); - close(fbdev); - return 0; - } - - memset ( lbb, 0, fix_screeninfo.line_length*var_screeninfo.yres ); - - // i'm not sure if this is ok - sx=var_screeninfo.xoffset; - sy=var_screeninfo.yoffset; - ex=sx+var_screeninfo.xres; - ey=sy+var_screeninfo.yres; -#if 0 - // find blach or white in the colormap - if (disp_detect) - { - bps=var_screeninfo.bits_per_pixel; - - if(fix_screeninfo.visual==FB_VISUAL_PSEUDOCOLOR) - { - colormap=(struct fb_cmap*)malloc(sizeof(struct fb_cmap)); - colormap->red=(__u16*)malloc(sizeof(__u16)*(1<green=(__u16*)malloc(sizeof(__u16)*(1<blue=(__u16*)malloc(sizeof(__u16)*(1<transp=(__u16*)malloc(sizeof(__u16)*(1<start=0; - colormap->len=1<\n"); - FTC_Manager_Done(manager); - FT_Done_FreeType(library); - free(lbb); - munmap(lfb, fix_screeninfo.smem_len); - close(fbdev); - return 0; - } - } - - FindColors(); - } -#endif - return 1; -} - -/****************************************************************************** - * ClearScreen - ******************************************************************************/ -/*! - * clear the framebuffer - - \param : none - \return : none -*/ -void ClearScreen(void) -{ - struct stat keybuf; - if (iFB && (stat(KBLCKFILE,&keybuf) != 0)) - { - memset(lbb, 0, fix_screeninfo.line_length*var_screeninfo.yres); // clear buffer for framebuffer-writing to transparent - memcpy(lfb, lbb, fix_screeninfo.line_length*var_screeninfo.yres); // empty framebuffer - } -} - -/****************************************************************************** - * CloseFB - ******************************************************************************/ -/*! - * close the connection to the framebuffer - - \param : none - \return : none -*/ -void CloseFB(void) -{ - // clear the framebuffer - ClearScreen(); - - if (iFB) - { - FTC_Manager_Done(manager); - FT_Done_FreeType(library); - free(lbb); - munmap(lfb, fix_screeninfo.smem_len); - close(fbdev); - } - iFB=0; -} - -/****************************************************************************** - * RenderChar - ******************************************************************************/ -/*! - * render a character to the screen - - \param currentchar : FT_ULong - \param sx : startposition x - \param sy : startposition y - \param ex : endposition x - \param color : color - \return : charwidth -*/ -int RenderChar(FT_ULong currentchar, int sx, int sy, int ex, int color) -{ - int row, pitch, bit, x = 0, y = 0; - FT_Error error; - FT_UInt glyphindex; - FT_Vector kerning; - FTC_Node anode; - currentchar=currentchar & 0xFF; - - //load char - if (!(glyphindex = FT_Get_Char_Index(face, currentchar))) - { - printf("TuxCal \n", (int)currentchar); - return 0; - } - - if ((error = FTC_SBitCache_Lookup(cache, &desc, glyphindex, &sbit, &anode))) - { - printf("TuxCal \n", (int)currentchar, error); - return 0; - } - - if (use_kerning) - { - FT_Get_Kerning(face, prev_glyphindex, glyphindex, ft_kerning_default, &kerning); - prev_glyphindex = glyphindex; - kerning.x >>= 6; - } - else - { - kerning.x = 0; - } - - // render char - if (color != -1) // don't render char, return charwidth only - { - if (sx + sbit->xadvance >= ex) return -1; // limit to maxwidth - - for (row = 0; row < sbit->height; row++) - { - for (pitch = 0; pitch < sbit->pitch; pitch++) - { - for (bit = 7; bit >= 0; bit--) - { - if (pitch*8 + 7-bit >= sbit->width) - { - break; // render needed bits only - } - - if ((sbit->buffer[row * sbit->pitch + pitch]) & 1<left + kerning.x + x ) *4 + fix_screeninfo.line_length* ( starty + sy - sbit->top + y ), "\xf2\xff\xff\xc0", 4 ); - - } - - x++; - } - } - x = 0; - y++; - } - } - - // return charwidth - return sbit->xadvance + kerning.x; -} - -/****************************************************************************** - * GetStringLen - ******************************************************************************/ -/*! - * calculate used pixels on screen for output - -*/ -int GetStringLen(char *string) -{ - int stringlen = 0; - - // reset kerning - prev_glyphindex = 0; - - // calc len - while (*string != '\0') - { - stringlen += RenderChar(*string, -1, -1, -1, -1); - string++; - } - - return stringlen; -} - -/****************************************************************************** - * RenderString - ******************************************************************************/ -/*! - * render a string to the screen - -*/ -void RenderString(char *string, int sx, int sy, int maxwidth, int layout, int size, int color) -{ - int stringlen, ex, charwidth; - - // set size - if(size == SMALL) - { -#ifdef FT_NEW_CACHE_API - desc.width = desc.height = FONTSIZE_SMALL; -#else - desc.font.pix_width = desc.font.pix_height = FONTSIZE_SMALL; -#endif - } - else if (size == NORMAL) - { -#ifdef FT_NEW_CACHE_API - desc.width = desc.height = FONTSIZE_NORMAL; -#else - desc.font.pix_width = desc.font.pix_height = FONTSIZE_NORMAL; -#endif - } - else - { -#ifdef FT_NEW_CACHE_API - desc.width = desc.height = FONTSIZE_BIG; -#else - desc.font.pix_width = desc.font.pix_height = FONTSIZE_BIG; -#endif - } - - // set alignment - if ((layout != LEFT) && (layout != FIXEDLEFT)) - { - stringlen = GetStringLen(string); - - switch(layout) - { - case FIXEDCENTER: -#ifdef FT_NEW_CACHE_API - stringlen = (desc.width/2) * strlen(string); -#else - stringlen = (desc.font.pix_width/2) * strlen(string); -#endif - - case CENTER: - { - if(stringlen < maxwidth) - { - sx += (maxwidth - stringlen)/2; - } - } break; - - case FIXEDRIGHT: -#ifdef FT_NEW_CACHE_API - stringlen = (desc.width/2) * strlen(string); -#else - stringlen = (desc.font.pix_width/2) * strlen(string); -#endif - case RIGHT: - { - if(stringlen < maxwidth) - { - sx += maxwidth - stringlen; - } - } break; - } - } - - // reset kerning - prev_glyphindex = 0; - - // render string - ex = sx + maxwidth; - - while (*string != '\0') - { - if ((charwidth = RenderChar(*string, sx, sy, ex, color)) == -1) return; // string > maxwidth - - if ((layout == FIXEDLEFT) || (layout == FIXEDCENTER) || (layout == FIXEDRIGHT)) -#ifdef FT_NEW_CACHE_API - sx += (desc.width/2); -#else - sx += (desc.font.pix_width/2); -#endif - else - sx += charwidth; - string++; - } -} - -/****************************************************************************** - * RenderBox - ******************************************************************************/ -/*! - * render a box to the screen - - \param sx : startposition x - \param sy : startposition y - \param ex : endposition x - \param ey : endposition y - \param mode : mode for painting (FILL or GRID) - \param color : color to paint with - \return : none -*/ -void RenderBox ( int sx, int sy, int ex, int ey, int mode, int color ) -{ - int loop; - int tx; - if ( mode == FILL ) - { - for ( ; sy < ey; sy++ ) - { - for ( tx=0; tx < ( ex-sx ); tx++ ) - { - memcpy ( lbb + startx*4 + sx*4 + ( tx*4 ) + fix_screeninfo.line_length* ( starty + sy ),"\x13\x13\xef\xff", 4 ); - } - } - } - else - { - // hor lines - - for ( loop = sx; loop <= ex; loop++ ) - { - memcpy ( lbb + startx*4+loop*4 + fix_screeninfo.line_length* ( sy+starty ), "\x4d\x3a\x25\xc0", 4 ); - memcpy ( lbb + startx*4+loop*4 + fix_screeninfo.line_length* ( sy+1+starty ), "\x4d\x3a\x25\xc0", 4 ); - memcpy ( lbb + startx*4+loop*4 + fix_screeninfo.line_length* ( ey-1+starty ), "\x4d\x3a\x25\xc0", 4 ); - memcpy ( lbb + startx*4+loop*4 + fix_screeninfo.line_length* ( ey+starty ), "\x4d\x3a\x25\xc0", 4 ); - } - - // columns - - for ( loop = sy; loop <= ey; loop++ ) - { - memcpy ( lbb + startx*4+sx*4 + fix_screeninfo.line_length* ( loop+starty ), "\xB0\xB0\xB0\xFF", 4 ); - memcpy ( lbb + startx*4+ ( sx+1 ) *4 + fix_screeninfo.line_length* ( loop+starty ), "\xB0\xB0\xB0\xFF", 4 ); - memcpy ( lbb + startx*4+ ( ex-1 ) *4 + fix_screeninfo.line_length* ( loop+starty ), "\xB0\xB0\xB0\xFF", 4 ); - memcpy ( lbb + startx*4+ex*4 + fix_screeninfo.line_length* ( loop+starty ), "\xB0\xB0\xB0\xFF", 4 ); - } - } -} - -/****************************************************************************** - * RenderInt - ******************************************************************************/ -/*! - * render a integer to the screen - -*/ -void RenderInt( char *string, int sx, int sy, int maxwidth, int layout, int size, int color, int colorgrid, int colorfill) -{ - int x,y,cx,cy; - int sizey=FONTSIZE_NORMAL; - - if (size==SMALL) sizey=FONTSIZE_SMALL; - else if (size==BIG) sizey=FONTSIZE_BIG; - - x=sx-5; - y=sy-sizey+8; - cx=x+maxwidth+3; - cy=y+sizey; - if (colorfill!=-1) RenderBox(x,y,cx,cy,FILL,colorfill); - if (colorgrid!=-1) RenderBox(x,y,cx,cy,GRID,colorgrid); - - RenderString(string,sx,sy,maxwidth,layout,size,color); -} - -/****************************************************************************** - * RenderSObject - ******************************************************************************/ -/*! - * render an object to the screen paint only the pixels which are set - - \param sx : startposition x - \param sy : startposition y - \param color : color to paint with - \param iType : index for the object to paint - \return : none -*/ -void RenderSObject(int sx, int sy, int color, int iType) -{ - int x, y; - char* pObj=sym_letter; - - // choose the object -/* - if (iType == OBJ_CIRCLE) pObj=circle; - if (iType == OBJ_HEART) pObj=heart; - if (iType == OBJ_MARKER) pObj=marker; - if (iType == OBJ_SCROLLUP) pObj=scroll_up; - if (iType == OBJ_SCROLLDN) pObj=scroll_dn; - if (iType == OBJ_CLOCK) pObj=symbolclock; -*/ - if (iType == OBJ_LETTER) pObj=sym_letter; - - // render - for (y = 0; y < OBJ_SY; y++) // for all columns - { - for (x = 0; x < OBJ_SX; x++) // for all lines - { - if (*pObj++) // only paint if mask-value set - memcpy(lbb + startx*4 + sx*4 + x*4 + fix_screeninfo.line_length*(starty + sy + y), "\xff\x54\x00\xff", 4); - } - } -} - -/****************************************************************************** - * CheckEvent - ******************************************************************************/ -/*! - * check the entry - - \param pEvt : EVT_DB* pointer to event-object - \return : 1:OK/Yes 0:Exit/No - changes made -*/ -/* --- not used in tuxcal-daemon -int CheckEvent(EVT_DB* pEvt) -{ - EVT_DB evtsic; - memcpy(&evtsic,pEvt,sizeof(EVT_DB)-MAXINFOLEN); - - int iLeapYear=0; - if (pEvt->month<1) pEvt->month=1; - if (pEvt->month>12) pEvt->month=12; - if (pEvt->year!=0) - { - if (pEvt->year<1700) pEvt->year=1700; - if (pEvt->year>2299) pEvt->year=2299; - iLeapYear=LeapYear(pEvt->year); - } - if (pEvt->day<1) pEvt->day=1; - if (pEvt->day>monthdays[iLeapYear][pEvt->month-1]) pEvt->day=monthdays[iLeapYear][pEvt->month-1]; - if (pEvt->hour>=0) - { - if (pEvt->hour>23) pEvt->hour=23; - if (pEvt->min<0) pEvt->min=0; - if (pEvt->min>59) pEvt->min=59; - } - - if (pEvt->type==PERIOD) - { - iLeapYear=0; - if (pEvt->emonth<1) pEvt->emonth=1; - if (pEvt->emonth>12) pEvt->emonth=12; - if (pEvt->eyear!=0) - { - if (pEvt->eyear<1700) pEvt->eyear=1700; - if (pEvt->eyear>2299) pEvt->eyear=2299; - iLeapYear=LeapYear(pEvt->eyear); - } - if (pEvt->eday<1) pEvt->eday=1; - if (pEvt->eday>monthdays[iLeapYear][pEvt->emonth-1]) pEvt->eday=monthdays[iLeapYear][pEvt->emonth-1]; - if (pEvt->ehour>=0) - { - if (pEvt->ehour>23) pEvt->ehour=23; - if (pEvt->emin<0) pEvt->emin=0; - if (pEvt->emin>59) pEvt->emin=59; - } - } - - if (memcmp(&evtsic,pEvt,sizeof(EVT_DB)-MAXINFOLEN)) return 0; - return 1; -} -*/ - -/****************************************************************************** - * LeapYear - ******************************************************************************/ -/*! - * calculate if we have a leap-year - -\return 1 if leap-year -*/ -int LeapYear(int year) -{ - if (((year % 4 == 0) && (!( year % 100 == 0))) && (year % 400 != 0)) - { - return 1; - } - return 0; -} - -/* -The basic steps for a date in the years 2000-2099 are as follows: - -Example date July 13th, 2004 - - 1. Take the last 2 digits of the year and add a quarter onto itself. (04 + 1 = 5) - 2. Get the corresponding code for the month. (January = 6, February = 2, March = 2, etc. See month codes for details). July = 5 - 3. Take the day. (=13) - 4. Add the numbers together (5 + 5 + 13 = 23) - 5. Take away 7 (or multiples of 7) until a number from 1-7 is left. (23 - 21 =2) - 6. This number corresponds to the day of the week. (1 = Monday, 2 = Tuesday, etc.) In this case 2 = Tuesday - -Apart from the basic steps, other elements have to be taken into account: - - * When adding a quarter of the year onto itself, If the quarter of the year is not a whole number, simply ignore the decimals. Do not round up. Therefore 27/4 = 6.75 = 6, and 2/4 = 0.5 = 0. - - * Leap years: subtract 1 from the total if the month is January or February. - - * Negative numbers. During the calculation you get 0 or negative numbers, just add seven until you get a number from 1-7. - - * Different "centuries" *. - o 1700s add 5 - o 1800s add 3 - o 1900s add 1 - o 2100s subtract 2 - o 2200s subtract 4 - - -Jan Feb Mar Apr. May Jun Jul Ago Sept Oct Nov Dec -6 2 2 5 0 3 5 1 4 6 2 4 -*/ -/****************************************************************************** - * DayOfWeek - ******************************************************************************/ -/*! - * return the day-of-the-week - * monday=1, tueday=2, etc. - -*/ -int DayOfWeek(int day, int month, int year) -{ - int iCalc; - - // no calculations out of range, return monday :) - if ((year<1700) || (year>=2300)) return 1; - - // Take the last 2 digits of the year and add a quarter onto itself. (04 + 1 = 5) - iCalc=(year % 100) + (year % 100)/4; - - // Get the corresponding code for the month. (January = 6, February = 2, March = 2, etc. See month codes for details). July = 5 - // Take the day. (=13) - // Add the numbers together (5 + 5 + 13 = 23) - iCalc+=monthcode[month-1]+day; - - // Leap years: subtract 1 from the total if the month is January or February. - if ((LeapYear(year)) && (month<3)) iCalc--; - - // Different "centuries" *. - // o 1700s add 5 - // o 1800s add 3 - // o 1900s add 1 - // o 2100s subtract 2 - // o 2200s subtract 4 - if (year<1800) iCalc+=5; - else if (year<1900) iCalc+=3; - else if (year<2000) iCalc+=1; - else if (year>=2200) iCalc-=4; - else if (year>=2100) iCalc-=2; - - // Negative numbers. During the calculation you get 0 or negative numbers, just add seven until you get a number from 1-7. - while (iCalc<1) iCalc+=7; - - // Take away 7 (or multiples of 7) until a number from 1-7 is left. (23 - 21 =2) - while (iCalc>7) iCalc-=7; - - return iCalc; -} - -/****************************************************************************** - * AddDays - ******************************************************************************/ -/*! - * add days (max. +/- 28) to date - -*/ -void AddDays(int* pday, int* pmonth, int* pyear, int adddays) -{ - if ((adddays>28) || (adddays<-28)) return; - - int day = *pday; - int month = *pmonth; - int year = *pyear; - int iLeapYear; - - iLeapYear=LeapYear(year); - - // substract days - if (adddays<0) - { - day+=adddays; - if (day<1) - { - month--; - if (month<1) - { - month=12; - year--; - } - day+=monthdays[iLeapYear][month-1]; - } - } - - // add days - if (adddays>0) - { - day+=adddays; - if (day > monthdays[iLeapYear][month-1]) - { - day-=monthdays[iLeapYear][month-1]; - month++; - if (month>12) - { - month=1; - year++; - } - } - } - - *pday=day; - *pmonth=month; - *pyear=year; -} - -/****************************************************************************** - * CalcEastern - ******************************************************************************/ -/*! - * - - Christi Himmelfahrt (+39), - - Pfingsten (+49), - - Fronleichnam (+60), - -Der Muttertag ist der zweite Sonntag im Mai, -das Erntedankfest der erste Sonntag im Oktober (jedoch nicht überall!). -Der 1. Advent ist der Sonntag nach dem 26. November; -der Buß- und Bettag liegt 11 Tage vor dem 1. Advent. - - -*/ -void CalcEastern(int year, int* month, int* day) -{ - int a,b,c,d,e; - int dM, dA; - int M = 24, N=5; - - if (year<1800) { M=23; N=3; } - else if (year<1900) { M=23; N=4; } - else if (year<2100) { M=24; N=5; } - else if (year<2200) { M=24; N=6; } - - a= year % 19; - b= year % 4; - c= year % 7; - d= (19*a + M) % 30; - e= (2*b + 4*c + 6*d + N) % 7; - - dM = (22 + d + e); // eastern in march dM >= 22 - dA = (d + e - 9); // eastern in april dA <= 25 - - *month=3; - *day=dM; // we think eastern is in march - - if (dM > 31) - { - if (dA == 26) // special rule - { *month=4; *day=19; } - else if ((dA == 25) && (d == 28) && (a > 10)) // another special rule - { *month=4; *day=18; } - else - { *month=4; *day=dA; } - } -} - -/****************************************************************************** - * FillEasternDays - ******************************************************************************/ -/*! - * fill the structure for this years for eastern etc. - - Christi Himmelfahrt (+39), - - Pfingsten (+49), - - Fronleichnam (+60), - -Der Muttertag ist der zweite Sonntag im Mai, -das Erntedankfest der erste Sonntag im Oktober (jedoch nicht überall!). -Der 1. Advent ist der Sonntag nach dem 26. November; -der Buß- und Bettag liegt 11 Tage vor dem 1. Advent. - - -*/ -void FillEasternDays(int year) -{ - int mon, day; - int mon1, day1; - - CalcEastern(year, &mon, &day); - mon1=mon; day1=day; - varaibledays[OFFSET_E-1].mon = mon; // eastern - varaibledays[OFFSET_E-1].day = day; - AddDays(&day, &mon, &year, 1); - varaibledays[OFFSET_EM-1].mon = mon; // eastern monday - varaibledays[OFFSET_EM-1].day = day; - - AddDays(&day, &mon, &year, 19); // +39 days from eastern - AddDays(&day, &mon, &year, 19); - varaibledays[OFFSET_H-1].mon = mon; // christi himmelfahrt - varaibledays[OFFSET_H-1].day = day; - - AddDays(&day, &mon, &year, 10); - varaibledays[OFFSET_P-1].mon = mon; // pfingsten - varaibledays[OFFSET_P-1].day = day; - AddDays(&day, &mon, &year, 1); - varaibledays[OFFSET_PM-1].mon = mon; // pfingsten montag - varaibledays[OFFSET_PM-1].day = day; - - AddDays(&day, &mon, &year, 10); - varaibledays[OFFSET_F-1].mon = mon; // fronleichnam - varaibledays[OFFSET_F-1].day = day; - - AddDays(&day1, &mon1, &year, -2); - varaibledays[OFFSET_KF-1].mon = mon1; // karfreitag - varaibledays[OFFSET_KF-1].day = day1; - AddDays(&day1, &mon1, &year, -1); - varaibledays[OFFSET_GD-1].mon = mon1; // gruendonnerstag - varaibledays[OFFSET_GD-1].day = day1; - - AddDays(&day1, &mon1, &year, -23); - AddDays(&day1, &mon1, &year, -20); - varaibledays[OFFSET_A-1].mon = mon1; // aschermittwoch - varaibledays[OFFSET_A-1].day = day1; - AddDays(&day1, &mon1, &year, -2); - varaibledays[OFFSET_RM-1].mon = mon1; // rosenmontag - varaibledays[OFFSET_RM-1].day = day1; - - //mothersday is 2. sunday in may - int iWDay; - iWDay=DayOfWeek(1,5,year); - varaibledays[OFFSET_M-1].mon = 5; - varaibledays[OFFSET_M-1].day = 15-iWDay; - - // sommertime - iWDay=DayOfWeek(31,3,year); - if (iWDay!=7) varaibledays[OFFSET_SZ-1].day = 31-iWDay; - else varaibledays[OFFSET_SZ-1].day = 31; - varaibledays[OFFSET_SZ-1].mon = 3; - - // wintertime - iWDay=DayOfWeek(31,10,year); - if (iWDay!=7) varaibledays[OFFSET_WZ-1].day = 31-iWDay; - else varaibledays[OFFSET_WZ-1].day = 31; - varaibledays[OFFSET_WZ-1].mon = 10; - - varaibledays[OFFSET_W0-1].day=24; // heiliger abend - varaibledays[OFFSET_W0-1].mon=12; - varaibledays[OFFSET_W1-1].day=25; // 1. weihnachtstag - varaibledays[OFFSET_W1-1].mon=12; - varaibledays[OFFSET_W2-1].day=26; // 2. weihnachtstag - varaibledays[OFFSET_W2-1].mon=12; - varaibledays[OFFSET_3K-1].day=6; // hl. 3 koenige - varaibledays[OFFSET_3K-1].mon=1; - varaibledays[OFFSET_N-1].day=1; // neujahr - varaibledays[OFFSET_N-1].mon=1; - varaibledays[OFFSET_S-1].day=31; // sylvester - varaibledays[OFFSET_S-1].mon=12; - varaibledays[OFFSET_V-1].day=14; // valentinstag - varaibledays[OFFSET_V-1].mon=2; - varaibledays[OFFSET_1M-1].day=1; // 1. may - varaibledays[OFFSET_1M-1].mon=5; - varaibledays[OFFSET_MH-1].day=15; // maria himmelfahrt - varaibledays[OFFSET_MH-1].mon=8; - varaibledays[OFFSET_NI-1].day=6; // nikolaus - varaibledays[OFFSET_NI-1].mon=12; - varaibledays[OFFSET_ND-1].day=3; // tag der deutschen einheit - varaibledays[OFFSET_ND-1].mon=10; - varaibledays[OFFSET_NA-1].day=26; // nationalfeiertag oesterreich - varaibledays[OFFSET_NA-1].mon=10; -} - -/****************************************************************************** - * IsEvent - ******************************************************************************/ -/*! - * is there an event at this day and the next sigtype days - * we fill array-index 0 with the actual day and time-info - * we fill array-index 1 with the actual day without time-info - * we fill array-index 2 with the next day - * we fill array-index 3 with the following day - -*/ -int IsEvent(int day, int month, int year) -{ - int iEntry=0; - int iCnt=0; - int iCntTm=0; - int iTotalCnt = 0; - int iFound; - int days = __mon_yday[LeapYear(year) ? 1 : 0][month-1]+day; - int i,j; - - // empty all found events - for (j=0; j<=MAXCHECKDAYS; j++) - iCntEvents[j]=0; - - // check for this, but also for up to sigtype days - for (j=1; j<=sigtype; j++) - { - if ((sigmode == SIGALL) || (sigmode == SIGHOLIDAY)) - { - // first check for any of the holidays: eastern, etc. - for (i=1;i<=NOF_VDAYS;i++) - if ((varaibledays[i-1].mon==month) && (varaibledays[i-1].day==day)) - { - iEventType[j][iCnt++]=MAXENTRYS+i; - iCntEvents[j]++; - } - } - - // start with first index - iEntry=0; - - // now check the database - while (iEntry= __mon_yday[0][2]) iTmpDays1++; - if (iTmpDays2 >= __mon_yday[0][2]) iTmpDays2++; - if ((iTmpDays1 <= days) && (iTmpDays2 >= days)) - iFound=1; - } - else - { - if ((eventdb[iEntry].days <= days) && (eventdb[iEntry].edays >= days)) - iFound=1; - } - } - else - { - if (((eventdb[iEntry].year < year) || ((eventdb[iEntry].year == year) && (eventdb[iEntry].days <= days))) && - ((eventdb[iEntry].eyear > year) || ((eventdb[iEntry].eyear == year) && (eventdb[iEntry].edays >= days)))) - iFound=1; - } - } - } - - // add event-idx to array - if (iFound) - { - if (j==1) // the first day to check - { - if (eventdb[iEntry].hour == -1) - { - iEventType[j][iCnt]=iEntry; - iCnt++; - iCntEvents[j]++; - } - else - { - iEventType[0][iCntTm]=iEntry; - iCntTm++; - iCntEvents[0]++; - } - } - else - { - iEventType[j][iCnt]=iEntry; - iCnt++; - iCntEvents[j]++; - } - } - - iEntry++; - if ((iCnt+iCntTm)==MAXCHECKS) break; - } - - iTotalCnt += (iCnt+iCntTm); - - iCnt = 0; - iCntTm = 0; - - AddDays(&day, &month, &year, 1); // goto the next day - days = __mon_yday[LeapYear(year) ? 1 : 0][month-1]+day; // count days (for easyier calculations - } - return iTotalCnt; // return the number of found events -} - -/****************************************************************************** - * LoadDatabase - ******************************************************************************/ -/*! - * load the database from file - -*/ -void LoadDatabase(void) -{ - // clear database - memset(eventdb,0,sizeof(eventdb)); - - char linebuffer[1024]; - FILE *fd_evt; - int iEntry=0; - int iLen; - char* p1; - char* p2; - - // read the tuxcal-event-file - if ((fd_evt = fopen(CFGPATH EVTFILE, "r"))!=NULL) - { - // read line by line - while (fgets(linebuffer, sizeof(linebuffer), fd_evt)) - { - p1=linebuffer; - - // first check for type - if ((p2=strchr(p1,';')) == NULL) - { - if ((p2=strchr(p1,'#')) != NULL) // comment ? - { - eventdb[iEntry].type = COMMENT; - strcpy(eventdb[iEntry].info,linebuffer); - } - else - { - eventdb[iEntry].type = SPACE; // empty line - } - iEntry++; - if (iEntry >= MAXENTRYS) break; - continue; - } - - switch (p1[0]) - { - case 'Z': - case 'z': eventdb[iEntry].type = PERIOD; break; - case 'G': - case 'g': eventdb[iEntry].type = BIRTHDAY; break; - case 'T': - case 't': eventdb[iEntry].type = EVENT; break; - case 'F': - case 'f': eventdb[iEntry].type = HOLIDAY; break; - default: eventdb[iEntry].type = COMMENT; - } - - - p1=p2; - *p1=' '; - //second check for date - if ((p2=strchr(p1,';')) == NULL) - continue; - - // we have 6 different formats, we use the length for recognition - // dd.mm.(6) or dd.mm.yyyy(10) or dd.mm.-dd.mm(13) or dd.mm.yyyy-dd.mm.yyyy(21) - // or dd.mm.yyyy hh:mm(16) or dd.mm.yyyy hh:mm-dd.mm.yy hh:mm(33) - *p2=0; - iLen=strlen(p1)-1; // stringlen without leading space - switch (iLen) - { - // dd.mm. all day event/holiday - case 6: - sscanf(p1," %02u.%02u.",&eventdb[iEntry].day,&eventdb[iEntry].month); - eventdb[iEntry].days=__mon_yday[0][eventdb[iEntry].month-1]+eventdb[iEntry].day; - eventdb[iEntry].hour=-1; - eventdb[iEntry].ehour=-1; - break; - - // dd.mm.yyyy all day event - case 10: - sscanf(p1," %02u.%02u.%04u",&eventdb[iEntry].day,&eventdb[iEntry].month,&eventdb[iEntry].year); - eventdb[iEntry].days=__mon_yday[LeapYear(eventdb[iEntry].year) ? 1 : 0][eventdb[iEntry].month-1]+eventdb[iEntry].day; - eventdb[iEntry].hour=-1; - eventdb[iEntry].ehour=-1; - break; - - // dd.mm.-dd.mm. all day event-period - case 13: - sscanf(p1," %02u.%02u.-%02u.%02u.",&eventdb[iEntry].day,&eventdb[iEntry].month,&eventdb[iEntry].eday,&eventdb[iEntry].emonth); - eventdb[iEntry].days=__mon_yday[0][eventdb[iEntry].month-1]+eventdb[iEntry].day; - eventdb[iEntry].edays=__mon_yday[0][eventdb[iEntry].emonth-1]+eventdb[iEntry].eday; - eventdb[iEntry].hour=-1; - eventdb[iEntry].ehour=-1; - break; - - // dd.mm.yyyy hh:mm event at certain time - case 16: - sscanf(p1," %02u.%02u.%04u %02u:%02u",&eventdb[iEntry].day,&eventdb[iEntry].month,&eventdb[iEntry].year,&eventdb[iEntry].hour,&eventdb[iEntry].min); - eventdb[iEntry].days=__mon_yday[LeapYear(eventdb[iEntry].year) ? 1 : 0][eventdb[iEntry].month-1]+eventdb[iEntry].day; - break; - - // dd.mm.yyyy-dd.mm.yyyy all day event period - case 21: - sscanf(p1," %02u.%02u.%04u-%02u.%02u.%04u",&eventdb[iEntry].day,&eventdb[iEntry].month,&eventdb[iEntry].year,&eventdb[iEntry].eday,&eventdb[iEntry].emonth,&eventdb[iEntry].eyear); - eventdb[iEntry].days=__mon_yday[LeapYear(eventdb[iEntry].year) ? 1 : 0][eventdb[iEntry].month-1]+eventdb[iEntry].day; - eventdb[iEntry].edays=__mon_yday[LeapYear(eventdb[iEntry].year) ? 1 : 0][eventdb[iEntry].emonth-1]+eventdb[iEntry].eday; - eventdb[iEntry].hour=-1; - eventdb[iEntry].ehour=-1; - break; - - // dd.mm.yyyy hh:mm-dd.mm.yyyy hh:mm event-period - case 33: - sscanf(p1," %02u.%02u.%04u %02u:%02u-%02u.%02u.%04u %02u:%02u",&eventdb[iEntry].day,&eventdb[iEntry].month,&eventdb[iEntry].year,&eventdb[iEntry].hour,&eventdb[iEntry].min,&eventdb[iEntry].eday,&eventdb[iEntry].emonth,&eventdb[iEntry].eyear,&eventdb[iEntry].ehour,&eventdb[iEntry].emin); - eventdb[iEntry].days=__mon_yday[LeapYear(eventdb[iEntry].year) ? 1 : 0][eventdb[iEntry].month-1]+eventdb[iEntry].day; - eventdb[iEntry].edays=__mon_yday[LeapYear(eventdb[iEntry].year) ? 1 : 0][eventdb[iEntry].emonth-1]+eventdb[iEntry].eday; - break; - } - - p1=p2; - *p2=' '; - //third check for info - if ((p2=strchr(p1,';')) == NULL) - if ((p2=strchr(p1,'\n')) == NULL) - continue; - - *p2=0; - strcpy(eventdb[iEntry].info,&p1[1]); - - iEntry++; - if (iEntry >= MAXENTRYS) break; - } - - iCntEntries=iEntry; - - printf("TuxcalD \r\n",iCntEntries); - - fclose(fd_evt); - } -} - -/****************************************************************************** - * SaveDatabase - ******************************************************************************/ -/*! - * save the database to the file - -*/ -void SaveDatabase(void) -{ - FILE *fd_evt; - int iEntry=0; - char info_tm1[7]; - char info_tm2[7]; - char info_yr1[5]; - char info_yr2[5]; - - // open the tuxcal-event-file - if ((fd_evt = fopen(CFGPATH EVTFILE, "w"))!=NULL) - { - while (iEntry=6)) - { - sscanf(ptr,"%02d:%02d;",&tSignal[i].hour,&tSignal[i].min); - ptr+=6; - } - else - { - tSignal[i].hour=-1; - tSignal[i].min=-1; - } - } -} - -/****************************************************************************** - * InterfaceThread - ******************************************************************************/ -/* - * communication-thread - - \param arg : argument for thread - \return : 1:OK 0:FAILED -*/ -void *InterfaceThread(void *arg) -{ - int fd_sock, fd_conn; // file for socket and connection - struct sockaddr_un srvaddr; - socklen_t addrlen; - char command; - - // setup connection - unlink(SCKFILE); - - srvaddr.sun_family = AF_UNIX; - strcpy(srvaddr.sun_path, SCKFILE); - addrlen = sizeof(srvaddr.sun_family) + strlen(srvaddr.sun_path); - - // open connection to socket-file - if ((fd_sock = socket(PF_UNIX, SOCK_STREAM, 0)) == -1) - { - slog ? syslog(LOG_DAEMON | LOG_INFO, "Interface: socket() failed") : printf("TuxCalD \n"); - return 0; - } - - // bind to socket - if (bind(fd_sock, (struct sockaddr*)&srvaddr, addrlen) == -1) - { - slog ? syslog(LOG_DAEMON | LOG_INFO, "Interface: bind() failed") : printf("TuxCalD \n"); - return 0; - } - - // listen to interface - if (listen(fd_sock, 0) == -1) - { - slog ? syslog(LOG_DAEMON | LOG_INFO, "Interface: listen() failed") : printf("TuxCalD \n"); - return 0; - } - - // communication loop - while(1) - { - // check if interface is ok - if ((fd_conn = accept(fd_sock, (struct sockaddr*)&srvaddr, &addrlen)) == -1) - { - slog ? syslog(LOG_DAEMON | LOG_INFO, "Interface: accept() failed") : printf("TuxCalD \n"); - continue; - } - - // request one byte from plugin - recv(fd_conn, &command, 1, 0); - - switch(command) - { - // plugin requests status - case 'G': - { - send(fd_conn, &online, 1, 0); - } break; - - // plugin sends new status - case 'S': - { - recv(fd_conn, &online, 1, 0); - - if ( online ) kill(pid, SIGUSR1); - else kill(pid, SIGUSR2); - } break; - - // relead database - case 'R': - { - slog ? syslog(LOG_DAEMON | LOG_INFO, "update") : printf("TuxCalD \n"); - int iOnlineTmp = online; - online = 0; // stop output now - memset(lbb, 0, fix_screeninfo.line_length*var_screeninfo.yres); // clear buffer for framebuffer-writing to transparent - memcpy(lfb, lbb,fix_screeninfo.line_length*var_screeninfo.yres);// empty framebuffer - ReadConf(); // load configuration - LoadDatabase(); // load database - online = iOnlineTmp; - oldyear = 0; // initiate no read of database - } break; - - case 'C': // toggle displaying the clock - { - if (show_clock=='Y') unlink(CLKFILE); - else fclose(fopen(CLKFILE, "w")); - } break; - - // plugin requests version - case 'V': - { - send(fd_conn, &versioninfo_d, 12, 0); - } break; - - close(fd_conn); - } - } - - return 0; -} - - -/****************************************************************************** - * SwapEndian - ******************************************************************************/ -// from tuxmaild -void SwapEndian(unsigned char *header) -{ - /* wrote the PlaySound() on my pc not in mind that dbox is big endian. so this was the lazy way to make it work, sorry... */ - - struct WAVEHEADER *wave = (struct WAVEHEADER*)header; - - wave->ChunkID1 = (wave->ChunkID1 << 24) | ((wave->ChunkID1 & 0x0000ff00) << 8) | ((wave->ChunkID1 & 0x00ff0000) >> 8) | (wave->ChunkID1 >> 24); -// wave->ChunkSize1 = (wave->ChunkSize1 << 24) | ((wave->ChunkSize1 & 0x0000ff00) << 8) | ((wave->ChunkSize1 & 0x00ff0000) >> 8) | (wave->ChunkSize1 >> 24); - wave->ChunkType = (wave->ChunkType << 24) | ((wave->ChunkType & 0x0000ff00) << 8) | ((wave->ChunkType & 0x00ff0000) >> 8) | (wave->ChunkType >> 24); - - wave->ChunkID2 = (wave->ChunkID2 << 24) | ((wave->ChunkID2 & 0x0000ff00) << 8) | ((wave->ChunkID2 & 0x00ff0000) >> 8) | (wave->ChunkID2 >> 24); - wave->ChunkSize2 = (wave->ChunkSize2 << 24) | ((wave->ChunkSize2 & 0x0000ff00) << 8) | ((wave->ChunkSize2 & 0x00ff0000) >> 8) | (wave->ChunkSize2 >> 24); - wave->Format = (wave->Format >> 8) | (wave->Format << 8); - wave->Channels = (wave->Channels >> 8) | (wave->Channels << 8); - wave->SampleRate = (wave->SampleRate << 24) | ((wave->SampleRate & 0x0000ff00) << 8) | ((wave->SampleRate & 0x00ff0000) >> 8) | (wave->SampleRate >> 24); -// wave->BytesPerSecond = (wave->BytesPerSecond << 24) | ((wave->BytesPerSecond & 0x0000ff00) << 8) | ((wave->BytesPerSecond & 0x00ff0000) >> 8) | (wave->BytesPerSecond >> 24); -// wave->BlockAlign = (wave->BlockAlign >> 8) | (wave->BlockAlign << 8); - wave->BitsPerSample = (wave->BitsPerSample >> 8) | (wave->BitsPerSample << 8); - - wave->ChunkID3 = (wave->ChunkID3 << 24) | ((wave->ChunkID3 & 0x0000ff00) << 8) | ((wave->ChunkID3 & 0x00ff0000) >> 8) | (wave->ChunkID3 >> 24); - wave->ChunkSize3 = (wave->ChunkSize3 << 24) | ((wave->ChunkSize3 & 0x0000ff00) << 8) | ((wave->ChunkSize3 & 0x00ff0000) >> 8) | (wave->ChunkSize3 >> 24); -} - -/****************************************************************************** - * SwapEndianChunk - ******************************************************************************/ -// from tuxmaild -void SwapEndianChunk(unsigned char *chunk) -{ - /* wrote the PlaySound() on my pc not in mind that dbox is big endian. so this was the lazy way to make it work, sorry... */ - - struct CHUNK *wave = (struct CHUNK*)chunk; - - wave->ChunkID = (wave->ChunkID << 24) | ((wave->ChunkID & 0x0000ff00) << 8) | ((wave->ChunkID & 0x00ff0000) >> 8) | (wave->ChunkID >> 24); - wave->ChunkSize = (wave->ChunkSize << 24) | ((wave->ChunkSize & 0x0000ff00) << 8) | ((wave->ChunkSize & 0x00ff0000) >> 8) | (wave->ChunkSize >> 24); -} -#if 0 -/****************************************************************************** - * PlaySound - ******************************************************************************/ -// from tuxmaild -void PlaySound(unsigned char *file) -{ - FILE *fd_wav; - unsigned char header[sizeof(struct WAVEHEADER)]; - int dsp, format, channels, speed, blocksize, readcount, count = 0; - unsigned char tmp; - unsigned char *samples; - struct WAVEHEADER *wave = (struct WAVEHEADER*)header; - - // check for userdefined soundfile - if ((fd_wav = fopen(file, "rb"))) - { - // read header and detect format - fread(header, 1, sizeof(header)-8, fd_wav); - SwapEndian(header); - - if(wave->ChunkID1 != RIFF || wave->ChunkType != WAVE || wave->ChunkID2 != FMT) - { - slog ? syslog(LOG_DAEMON | LOG_INFO, "unsupported Soundfile (WAVE only)") : printf("TuxCalD \n"); - fclose(fd_wav); - return; - } - - if(wave->Format != PCM) - { - slog ? syslog(LOG_DAEMON | LOG_INFO, "unsupported Soundfile (PCM only)") : printf("TuxCalD \n"); - fclose(fd_wav); - return; - } - - if(wave->SampleRate != 12000 && wave->SampleRate != 24000 && wave->SampleRate != 48000) - { - slog ? syslog(LOG_DAEMON | LOG_INFO, "unsupported Soundfile (12/24/48KHz only)") : printf("TuxCalD \n"); - fclose(fd_wav); - return; - } - - format = (wave->BitsPerSample == 8) ? AFMT_U8 : AFMT_S16_LE; - channels = wave->Channels; - speed = wave->SampleRate; - - // step over unsed bytes in fmt-chunk - count = wave->ChunkSize2 - 16; - while(count) - { - fread(&tmp, 1, 1, fd_wav); - count--; - } - - // find data-chunk - do - { - readcount=fread(&wave->ChunkID3, 1, 8, fd_wav); - SwapEndianChunk((char *)&wave->ChunkID3); - if(readcount < 8) - { - slog ? syslog(LOG_DAEMON | LOG_INFO, "could not find Sounddata") : printf("TuxMailD \n"); - fclose(fd_wav); - return; - } - if(wave->ChunkID3 != DATA) - { - count = wave->ChunkSize3; - while(count) - { - fread(&tmp, 1, 1, fd_wav); - count--; - } - } - }while(wave->ChunkID3 != DATA); - - // get samples - if(!(samples = (unsigned char*)malloc(wave->ChunkSize3))) - { - slog ? syslog(LOG_DAEMON | LOG_INFO, "not enough Memory for Sounddata") : printf("TuxCalD \n"); - fclose(fd_wav); - return; - } - - fread(samples, 1, wave->ChunkSize3, fd_wav); - fclose(fd_wav); - } - else return; - - // play sound - if((dsp = open(DSP, O_WRONLY)) == -1) - { - slog ? syslog(LOG_DAEMON | LOG_INFO, "could not open DSP") : printf("TuxCalD \n"); - return; - } - - if(ioctl(dsp, SNDCTL_DSP_SETFMT, &format) == -1) - { - slog ? syslog(LOG_DAEMON | LOG_INFO, "could not set DSP-Format") : printf("TuxCalD \n"); - close(dsp); - return; - } - - if(ioctl(dsp, SNDCTL_DSP_CHANNELS, &channels) == -1) - { - slog ? syslog(LOG_DAEMON | LOG_INFO, "could not set DSP-Channels") : printf("TuxCalD \n"); - close(dsp); - return; - } - - if(ioctl(dsp, SNDCTL_DSP_SPEED, &speed) == -1) - { - slog ? syslog(LOG_DAEMON | LOG_INFO, "could not set DSP-Samplerate") : printf("TuxCalD \n"); - close(dsp); - return; - } - - if(ioctl(dsp, SNDCTL_DSP_GETBLKSIZE, &blocksize) == -1) - { - slog ? syslog(LOG_DAEMON | LOG_INFO, "could not get DSP-Blocksize") : printf("TuxCalD \n"); - close(dsp); - return; - } - - while(count < wave->ChunkSize3) - { - write(dsp, samples + count, (count + blocksize > wave->ChunkSize3) ? wave->ChunkSize3 - count : blocksize); - count += blocksize; - } - - ioctl(dsp, SNDCTL_DSP_SYNC); - - // cleanup - if (samples != NULL) free(samples); - - close(dsp); -} -#endif -/****************************************************************************** - * EncodeBase64 - ******************************************************************************/ -// from tuxmaild -void EncodeBase64(char *decodedstring, int decodedlen) -{ - char encodingtable[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; - int src_index, dst_index; - - memset(encodedstring, 0, sizeof(encodedstring)); - for(src_index = dst_index = 0; src_index < decodedlen; src_index += 3, dst_index += 4) - { - encodedstring[0 + dst_index] = encodingtable[decodedstring[src_index] >> 2]; - encodedstring[1 + dst_index] = encodingtable[(decodedstring[src_index] & 3) << 4 | decodedstring[1 + src_index] >> 4]; - encodedstring[2 + dst_index] = encodingtable[(decodedstring[1 + src_index] & 15) << 2 | decodedstring[2 + src_index] >> 6]; - encodedstring[3 + dst_index] = encodingtable[decodedstring[2 + src_index] & 63]; - } - - if(decodedlen % 3) - { - switch(3 - decodedlen%3) - { - case 2: - encodedstring[strlen(encodedstring) - 2] = '='; - case 1: - encodedstring[strlen(encodedstring) - 1] = '='; - } - } -} - -/****************************************************************************** - * NotifyUser - ******************************************************************************/ -void NotifyUser() -{ - struct sockaddr_in SockAddr; - char http_cmd[1024], tmp_buffer[1024],tmp_buffer1[1024]; - char *http_cmd1 = "GET /cgi-bin/startPlugin?name=tuxcal.cfg HTTP/1.1\n\n"; - char *http_cmd2 = "GET /cgi-bin/xmessage?timeout=10&caption=TuxCal%20Information&body="; - char *http_cmd3 = "GET /control/message?nmsg="; - char *http_cmd4 = "GET /control/message?popup="; - int iBirthday = 0; - -/* - { - printf("we found %d event today with time info\r\n",iCntEvents[0]); - printf("we found %d event today without time info\r\n",iCntEvents[1]); - printf("we found %d event tomorrow\r\n",iCntEvents[2]); - printf("we found %d event in two days\r\n",iCntEvents[3]); - printf("we found %d event at exact this time\r\n",iCntTmEvents); - } -*/ - - // video notify - if(video != 5) - { - switch(video) - { - case 4: strcpy(http_cmd, http_cmd4); break; - case 3: strcpy(http_cmd, http_cmd3); break; - case 2: strcpy(http_cmd, http_cmd2); break; - default: strcpy(http_cmd, http_cmd1); - } - - if(video > 1) - { - int day, month, year; - int i; - EVT_DB* pEvt; - - day = tCheck_day; - month = tCheck_mon; - year = tCheck_year; - - // start with a newline (because of dreambox-httpd) -// tmp_buffer[0]=0; - strcpy(tmp_buffer, http_ln); - - // event now - if (iCntTmEvents) - { - strcat(tmp_buffer, http_br); - sprintf(tmp_buffer1,http_lines[MAXCHECKDAYS][osdidx],tCheck_hour,tCheck_min); - strcat(tmp_buffer, tmp_buffer1); -// printf("TuxCald <%s>\r\n",tmp_buffer); - - for (i=0;iinfo); - strcat(tmp_buffer, tmp_buffer1); - } - strcat(tmp_buffer, http_ln); -// printf("TuxCald <%s>\r\n",tmp_buffer); - } - else - { - // todays event with time-info - if (iCntEvents[0]) - { - strcat(tmp_buffer, http_br); - if (osdidx == 0) - sprintf(tmp_buffer1,http_lines[0][osdidx],day,monthmsg[month-1][osdidx],year); - else - sprintf(tmp_buffer1,http_lines[0][osdidx],monthmsg[month-1][osdidx],day,year); - strcat(tmp_buffer, tmp_buffer1); - - for (i=0;iinfo,pEvt->hour,pEvt->min); - strcat(tmp_buffer, tmp_buffer1); - } - strcat(tmp_buffer, http_ln); -// printf("TuxCald <%s>\r\n",tmp_buffer); - } - - // check events/birthdays/holidays for max. three days - int k; - for (k=1;k<=MAXCHECKDAYS;k++) - { - if (iCntEvents[k]) - { - strcat(tmp_buffer, http_br); - if (osdidx == 0) - sprintf(tmp_buffer1,http_lines[k-1][osdidx],day,monthmsg[month-1][osdidx],year); - else - sprintf(tmp_buffer1,http_lines[k-1][osdidx],monthmsg[month-1][osdidx],day,year); - strcat(tmp_buffer, tmp_buffer1); - - for (i=0;iMAXENTRYS) - { - sprintf(tmp_buffer1,infotype[3][osdidx],vdaysnames[iEventType[k][i]-MAXENTRYS-1][osdidx]); - } - else - { - pEvt=&eventdb[iEventType[k][i]]; - if (pEvt->type == BIRTHDAY) - { - iBirthday = 1; - sprintf(tmp_buffer1,infotype[0][osdidx],pEvt->info,tCheck_year-pEvt->year); - } - else - sprintf(tmp_buffer1,infotype[1][osdidx],pEvt->info); - } - strcat(tmp_buffer, tmp_buffer1); - } - strcat(tmp_buffer, http_ln); -// printf("TuxCald <%s>\r\n",tmp_buffer); - } - // step to next day - AddDays(&day,&month,&year,1); - } - } - - // convert spaces and german-characters - char *src=tmp_buffer; - char *dest=http_cmd+strlen(http_cmd); - char c; - while ((c=*src++)!=0) - { - switch (c) - { - case ' ': strcat(http_cmd,"%20"); dest+=3; break; - case 'ä': strcat(http_cmd,"%C3%A4"); dest+=6; break; - case 'ö': strcat(http_cmd,"%C3%B6"); dest+=6; break; - case 'ü': strcat(http_cmd,"%C3%BC"); dest+=6; break; - case 'Ä': strcat(http_cmd,"%C3%84"); dest+=6; break; - case 'Ö': strcat(http_cmd,"%C3%96"); dest+=6; break; - case 'Ü': strcat(http_cmd,"%C3%9C"); dest+=6; break; - case 'ß': strcat(http_cmd,"%C3%9F"); dest+=6; break; - default: - *dest++=c; - *dest=0; - } - } - } - - strcat(http_cmd, " HTTP/1.1\n"); -// printf("TuxCald <%s>\r\n",http_cmd); - - if(webuser[0]) - { - strcat(http_cmd, "Authorization: Basic "); - - strcpy(decodedstring, webuser); - strcat(decodedstring, ":"); - strcat(decodedstring, webpass); - EncodeBase64(decodedstring, strlen(decodedstring)); - - strcat(http_cmd, encodedstring); - strcat(http_cmd, "\n\n"); - } - else - { - strcat(http_cmd, "\n"); - } - } - - if ((sock = socket(AF_INET, SOCK_STREAM, 0)) == -1) - { - slog ? syslog(LOG_DAEMON | LOG_INFO, "could not create Socket") : printf("TuxCalD \n"); - } - else - { - SockAddr.sin_family = AF_INET; - SockAddr.sin_port = htons(webport); - inet_aton("127.0.0.1", &SockAddr.sin_addr); - - if (connect(sock, (struct sockaddr*)&SockAddr, sizeof(SockAddr))) - { - slog ? syslog(LOG_DAEMON | LOG_INFO, "could not connect to WebServer") : printf("TuxCalD \n"); - } - else - { - send(sock, http_cmd, strlen(http_cmd), 0); - } - close(sock); - } -#if 0 //FIXME - // audio notify - if (audio == 'Y') - { - if (iCntTmEvents) PlaySound(CFGPATH SNDFILE3); - else if (iBirthday) PlaySound(CFGPATH SNDFILE1); - else PlaySound(CFGPATH SNDFILE2); - } -#endif - sprintf(tmp_buffer,"%s %d %d",CFGPATH SHELLFILE,iCntTmEvents,iBirthday); - system(tmp_buffer); -} - - -/****************************************************************************** - * SigHandler - ******************************************************************************/ -void SigHandler(int signal) -{ - switch(signal) - { - case SIGTERM: - slog ? syslog(LOG_DAEMON | LOG_INFO, "shutdown") : printf("TuxCalD \n"); - online = 0; // no longer online - ClearScreen(); - intervall = 0; // let the daemon end - break; - - case SIGHUP: - { - slog ? syslog(LOG_DAEMON | LOG_INFO, "update") : printf("TuxCalD \n"); - int iOnlineTmp = online; - online = 0; // stop output now - ClearScreen(); - ReadConf(); // load configuration - LoadDatabase(); // load database - oldyear = 0; // initiate no read of database - online = iOnlineTmp; - } break; - - case SIGUSR1: - online = 1; - if(slog) syslog(LOG_DAEMON | LOG_INFO, "wakeup"); - else printf("TuxCalD \n"); - break; - - case SIGUSR2: - online = 0; // no longer online - ClearScreen(); - if(slog) syslog(LOG_DAEMON | LOG_INFO, "sleep"); - else printf("TuxCalD \n"); - break; - - case SIGALRM: - ClearScreen(); - if (show_clock=='Y') unlink(CLKFILE); - else fclose(fopen(CLKFILE, "w")); - if (slog) syslog(LOG_DAEMON | LOG_INFO, "show/hide the clock"); - else printf("TuxCalD \n"); - break; - } -} - -/****************************************************************************** - * MainProgram - ******************************************************************************/ -int main(int argc, char **argv) -{ - char cvs_revision[] = "$Revision: 1.12 $"; - int param, nodelay = 0; - pthread_t thread_id; - void *thread_result = 0; - - sscanf(cvs_revision, "%*s %s", versioninfo_d); - - // check commandline parameter - if(argc > 1) - { - for(param = 1; param < argc; param++) - { - if(!strcmp(argv[param], "-nodelay")) - { - nodelay = 1; - } - else if(!strcmp(argv[param], "-syslog")) - { - slog = 1; - openlog("TuxCalD", LOG_ODELAY, LOG_DAEMON); - } -#if 0 - else if(!strcmp(argv[param], "-play")) - { - param++; - PlaySound(argv[param]); - return 0; - } -#endif - else if(!strcmp(argv[param], "-v")) - { - printf("%s\r\n",versioninfo_d); - return 0; - } - } - } - - // create daemon - - time(&tt); - strftime(timeinfo, 22, "%d.%m.%Y - %T", localtime(&tt)); - - switch(fork()) - { - case 0: - slog ? syslog(LOG_DAEMON | LOG_INFO, "%s started [%s]", versioninfo_d, timeinfo) : printf("TuxCalD %s started [%s]\n", versioninfo_d, timeinfo); - setsid(); - chdir("/"); - break; - - case -1: - slog ? syslog(LOG_DAEMON | LOG_INFO, "%s aborted!", versioninfo_d) : printf("TuxCalD %s aborted!\n", versioninfo_d); - return -1; - default: - - exit(0); - } - - // check for running daemon - if ((fd_pid = fopen(PIDFILE, "r+"))) - { - fscanf(fd_pid, "%d", &pid); - - if(kill(pid, 0) == -1 && errno == ESRCH) - { - pid = getpid(); - rewind(fd_pid); - fprintf(fd_pid, "%d", pid); - fclose(fd_pid); - } - else - { - slog ? syslog(LOG_DAEMON | LOG_INFO, "Daemon already running with PID %d", pid) : printf("TuxCalD \n", pid); - fclose(fd_pid); - return -1; - } - } - else - { - pid = getpid(); - fd_pid = fopen(PIDFILE, "w"); - fprintf(fd_pid, "%d", pid); - fclose(fd_pid); - } - - // install sighandler - if (signal(SIGTERM, SigHandler) == SIG_ERR) - { - slog ? syslog(LOG_DAEMON | LOG_INFO, "Installation of Signalhandler for TERM failed") : printf("TuxCalD \n"); - return -1; - } - if (signal(SIGHUP, SigHandler) == SIG_ERR) - { - slog ? syslog(LOG_DAEMON | LOG_INFO, "Installation of Signalhandler for HUP failed") : printf("TuxCalD \n"); - return -1; - } - - if (signal(SIGUSR1, SigHandler) == SIG_ERR) - { - slog ? syslog(LOG_DAEMON | LOG_INFO, "Installation of Signalhandler for USR1 failed") : printf("TuxCalD \n"); - return -1; - } - - if (signal(SIGUSR2, SigHandler) == SIG_ERR) - { - slog ? syslog(LOG_DAEMON | LOG_INFO, "Installation of Signalhandler for USR2 failed") : printf("TuxCalD \n"); - return -1; - } - - if (signal(SIGALRM, SigHandler) == SIG_ERR) - { - slog ? syslog(LOG_DAEMON | LOG_INFO, "Installation of Signalhandler for ALRM failed") : printf("TuxCalD \n"); - return -1; - } - - // install communication interface - if (pthread_create(&thread_id, NULL, InterfaceThread, NULL)) - { - slog ? syslog(LOG_DAEMON | LOG_INFO, "Interface-Thread failed") : printf("TuxCalD \n"); - return -1; - } - - // read, update or create config - ReadConf(); // read actual config - WriteConf(); // write actual config back to file - - // startdelay - if (!nodelay) sleep(startdelay); - - // read the dates and times - LoadDatabase(); // load database - ReadSTimer(); // read the timers for fixed signaling - - // we are online now - online=1; - show_clock=show_clockatstart; - unlink(CLKFILE); - if (show_clock == 'Y') - { - // open connection to framebuffer - iFB=OpenFB(); - if (!iFB) show_clock = 'N'; - else fclose(fopen(CLKFILE, "w")); - } - - // definitions for some variables - char info[MAXCLOCKINFOLEN]; // storage for clock/date output - int iLen1; // used len for this info - int iLen2; - int y; // framebuffer output linecounter - unsigned char *pmem1; // pointer for framebuffer-output - unsigned char *pmem2; - int iNewMails = 0; // new mail received by tuxmail - int iFG; - int iBG; - struct stat keybuf; - - // check events until signal to finish - do - { - // check and display clock only if online - if (online) - { - time(&tt); // read the actual time - at = localtime(&tt); - - // correct colors - iFG = disp_color; - iBG = disp_back; - if (iBlack!=-1) - { - if (disp_color==1) iFG=iBlack; - if (disp_back==1) iBG=iBlack; - } - if (iWhite!=-1) - { - if (disp_color==2) iFG=iWhite; - if (disp_back==2) iBG=iWhite; - } - - //------------------- part for controlling the clock - if ((iFB) && (disp_clock=='Y') && (show_clock=='Y')) // should we display the clock - { - FILE* pipe; - pipe = fopen(CLKFILE,"r"); - if (pipe == NULL) - { - show_clock='N'; - ClearScreen(); - } - else fclose(pipe); - } - else if (disp_clock=='Y') - { - FILE* pipe; - pipe = fopen(CLKFILE,"r"); - if (pipe != NULL) - { - if (!iFB) iFB=OpenFB(); - if (iFB) show_clock = 'Y'; - fclose(pipe); - } - else - { - show_clock = 'N'; - } - } - - //------------------- part for showing the clock - if ((iFB) && (disp_clock=='Y') && (show_clock=='Y') && (stat(KBLCKFILE,&keybuf) != 0)) // should we display the clock - { - char line[10]; - if (disp_mail=='Y') - { - // check for mail - FILE* pipe; - pipe = fopen(NOTIFILE,"r"); - if( pipe != NULL) - { - if (fgets( line, 10, pipe )) - iNewMails=atoi(line); // number of new mails - fclose(pipe); - } - else - { - if (iNewMails) - { - //ClearScreen(); - memset(lbb, 0, fix_screeninfo.line_length*var_screeninfo.yres); - } - iNewMails=0; - } - } - else - { - if (iNewMails) - { - ClearScreen(); - } - iNewMails=0; - } - strftime(info,MAXCLOCKINFOLEN,infomsgclock[(disp_sec == 'Y') ? 1 : 0],at); - iLen1=(strlen(info)*iFontSize)/2; - if (iNewMails) - { - RenderBox(0,8,iFontSize*2,iFontSize+2,FILL,iBG); - if (at->tm_sec & 1) - { - sprintf(line,"%d",iNewMails); - RenderInt(line,0,iFontSize,iFontSize*2, CENTER, iFont, iFG,-1,iBG); - } - else RenderSObject((iFontSize*2-OBJ_SX)/2,(iFontSize-OBJ_SY)/2+8,iFG,OBJ_LETTER); - } - RenderInt(info,iNewMails?(iFontSize*2+5):0,iFontSize,iLen1, (startx>(ex/2))?FIXEDRIGHT:FIXEDLEFT, iFont, iFG,-1,iBG); - if (iNewMails) iLen1+=(iFontSize*2+5); - - iLen2=0; - if (disp_date=='Y') // should we display the date - { - strftime(info,MAXCLOCKINFOLEN,infomsg[0][osdidx],at); - iLen2=(strlen(info)*iFontSize)/2; - RenderInt(info,0,2*iFontSize,iLen2, (startx>(ex/2))?FIXEDRIGHT:FIXEDLEFT, iFont, iFG,-1,iBG); - } - - int iLen; - iLen=(iLen1>iLen2)?iLen1:iLen2; - - // output to framebuffer - pmem1=lfb+starty*fix_screeninfo.line_length+startx*4; - pmem2=lbb+(starty+3)*fix_screeninfo.line_length+startx*4; - if (iNewMails) pmem1-=(OBJ_SX+15); - for (y=0;y<(iFontSize);y++) - { - memcpy(pmem1,pmem2,iLen*4); - pmem1+=fix_screeninfo.line_length; - pmem2+=fix_screeninfo.line_length; - } - if (disp_date=='Y') - for (y=0;y<(iFontSize);y++) - { - memcpy(pmem1,pmem2,iLen*4); - pmem1+=fix_screeninfo.line_length; - pmem2+=fix_screeninfo.line_length; - } - } - - //------------------- part for calculating events - int bChanged = 0; - int iFoundEvent = 0; - iCntTmEvents = 0; - tCheck_year = at->tm_year+1900; - if (oldyear!=tCheck_year) - { - // calculate the christian and other holidays - FillEasternDays(tCheck_year); - bChanged=1; - } - - tCheck_min = at->tm_min; - tCheck_hour = at->tm_hour; - - // check for signaling at s-times - if ((tCheck_min != oldmin) || (tCheck_hour != oldhour)) - { - int i; - // scan all s-timers - for (i=0;i\r\n",tCheck_hour,tCheck_min); - } - } - } - - tCheck_mon = at->tm_mon+1; - tCheck_day = at->tm_mday; - - if ((tCheck_year != oldyear) || (tCheck_mon != oldmonth) || (tCheck_day != oldday) || (bChanged)) - { - oldyear = tCheck_year; - oldmonth = tCheck_mon; - oldday = tCheck_day; - iFoundEvent = IsEvent(tCheck_day, tCheck_mon, tCheck_year); - } - - if ((tCheck_min != oldmin) || (tCheck_hour != oldhour) || (bChanged)) - { - oldhour = tCheck_hour; - oldmin = tCheck_min; - - int i; - EVT_DB* pEvt; - // check all events on this day if the event is at exact time - for (i=0; iyear == tCheck_year) && (pEvt->month == tCheck_mon) && (pEvt->day == tCheck_day) - && (pEvt->hour == tCheck_hour) && (pEvt->min == tCheck_min)) - { - iFoundEvent=1; - iEventType[MAXCHECKDAYS+1][iCntTmEvents++]=iEventType[0][i]; - } - } - } - - // we found (min.) one event to signal now - if (iFoundEvent) NotifyUser(); - } - sleep(intervall); - } - while (intervall); - - // cleanup - pthread_cancel(thread_id); - pthread_join(thread_id, thread_result); - - // close connection to framebuffer - CloseFB(); - - unlink(PIDFILE); - unlink(SCKFILE); - - time(&tt); - strftime(timeinfo, 22, "%d.%m.%Y - %T", localtime(&tt)); - - slog ? syslog(LOG_DAEMON | LOG_INFO, "%s closed [%s]", versioninfo_d, timeinfo) : printf("TuxCalD %s closed [%s]\n", versioninfo_d, timeinfo); - - closelog(); - - return 0; -} diff --git a/archive-sources/tuxcal/daemon/tuxcald.h b/archive-sources/tuxcal/daemon/tuxcald.h deleted file mode 100755 index 3ae222e..0000000 --- a/archive-sources/tuxcal/daemon/tuxcald.h +++ /dev/null @@ -1,481 +0,0 @@ -/****************************************************************************** - * <<< TuxCal - Calendar daemon >>> - * (c) Robert "robspr1" Spreitzer 2006 (robert.spreitzer@inode.at) - *----------------------------------------------------------------------------- - * $Log: tuxcald.h,v $ - * Revision 1.10 2009/03/11 20:42:23 rhabarber1848 - * remove SuSv3 legacy functions: http://tuxbox-forum.dreambox-fan.de/forum/viewtopic.php?p=364177#p364177 - * - * Revision 1.09 2007/05/17 16:19:46 dbluelle - * Make plugins compile with freeetype 2.1.x on dreambox (as needed for Neutrino on Dreambox) - * - * Revision 1.08 2007/01/07 11:51:22 robspr1 - * - execute tuxcal.notify on new events - * - * Revision 1.07 2007/01/06 16:38:59 robspr1 - * - accept unknown chunks in wave header - * - * Revision 1.06 2006/02/24 08:14:49 robspr1 - * - hide clock if file-controlled - * - * Revision 1.05 2006/02/23 23:08:41 robspr1 - * - signal up to 5 days, toggle clock-display file - * - * Revision 1.04 2006/02/18 14:57:46 robspr1 - * add signaling at fixed times, some small fixes - * - * Revision 1.03 2006/02/17 21:30:22 robspr1 - * -add command to switch/hide the clock, move the startdelay-command - * - * Revision 1.02 2006/02/15 19:17:50 robspr1 - * first version in CVS - * - * Revision 1.01 2006/02/12 23:10:00 robspr1 - * - bugfix reading params POS_X and POS_Y (needed by the daemon) - * - * Revision 1.00 2006/02/06 20:00:00 robspr1 - * - first version - * - ******************************************************************************/ -// lots of code is from the tuxmail-project - -//#include "config.h" -/* -#if !defined(HAVE_DVB_API_VERSION) && defined(HAVE_OST_DMX_H) -#define HAVE_DVB_API_VERSION 1 -#endif*/ -#define HAVE_DVB_API_VERSION 3 - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#if HAVE_DVB_API_VERSION == 3 -#include -#endif - -#include - -#include FT_FREETYPE_H -#include FT_CACHE_H -#include FT_CACHE_SMALL_BITMAPS_H - -#if ((defined(FREETYPE_MAJOR)) && (((FREETYPE_MAJOR == 2) && (((FREETYPE_MINOR == 1) && (FREETYPE_PATCH >= 9)) || (FREETYPE_MINOR > 1))) || (FREETYPE_MAJOR > 2))) -#define FTC_Manager_Lookup_Face FTC_Manager_LookupFace -#define _FTC_SBit_Cache_Lookup(a,b,c,d) FTC_SBitCache_Lookup(a,b,c,d,NULL) -#else -#define _FTC_SBit_Cache_Lookup(a,b,c,d) FTC_SBit_Cache_Lookup(a,b,c,d) -#endif - -#define DSP "/dev/sound/dsp" - -#define RIFF 0x46464952 -#define WAVE 0x45564157 -#define FMT 0x20746D66 -#define DATA 0x61746164 -#define PCM 1 - -#define SCKFILE "/tmp/tuxcald.socket" //! socket-file, connection to daemon -#define RUNFILE "/var/etc/.tuxcald" //! autostart-file for daemon -#define CFGPATH "/var/tuxbox/config/tuxcal/" //! config-path -#define TMPPATH "/tmp/" //! temp-path -#define CFGFILE "tuxcal.conf" //! config-file -#define EVTFILE "tuxcal.list" //! database-file -#define PIDFILE "/tmp/tuxcald.pid" //! PID file -#define CLKFILE "/tmp/tuxcal.clk" //! clock file -#define NOTIFILE "/tmp/tuxmail.new" //! notify from tuxmail -#define SNDFILE1 "tuxcal_birthday.wav" //! birthday sound -#define SNDFILE2 "tuxcal_event.wav" //! event sound -#define SNDFILE3 "tuxcal_timer.wav" //! timer sound -#define SHELLFILE "tuxcal.notify" //! notify shell file -#define KBLCKFILE "/tmp/keyboard.lck" //! file to lock keyboard-conversion - -#define bool char -#define true 1 -#define false 0 - -//---------------------------------------------------- -// OSD different languages - -int osdidx = 0; // actual used language - -#define MAXOSD 2 - -char *monthmsg[12][MAXOSD] = { - { "Januar" , "January" }, - { "Februar" , "February" }, - { "März" , "March" }, - { "April" , "April" }, - { "Mai" , "May" }, - { "Juni" , "Juni" }, - { "Juli" , "July" }, - { "August" , "August" }, - { "September" , "September" }, - { "Oktober" , "October" }, - { "November" , "November" }, - { "Dezember" , "December" } -}; - -char *vdaysnames[][MAXOSD] = { - { "Ostersonntag" , "eastern sunday" }, - { "Ostermontag" , "eastern monday" }, - { "Christi Himmelfahrt" , "Christi Himmelfahrt" }, - { "Pfingstsonntag" , "Pfingsten" }, - { "Pfingstmontag" , "Pfingsten" }, - { "Fronleichnam" , "Fronleichnam" }, - { "Aschermittwoch" , "Aschermittwoch" }, - { "Muttertag" , "Muttertag" }, - { "Sommerzeit" , "summer time" }, - { "Winterzeit" , "winter time" }, - { "heiliger Abend" , "christmas" }, - { "1. Weihnachtsfeiertag" , "christmas" }, - { "2. Weihnachtsfeiertag" , "christmas" }, - { "heil. 3 Könige" , "three kings" }, - { "Neujahr" , "new year" }, - { "Sylvester" , "sylvester" }, - { "Valentinstag" , "valentine" }, - { "Mai-/Staatsfeiertag" , "first may" }, - { "Maria Himmelfahrt" , "Maria Himmelfahrt" }, - { "Nikolaus" , "st. claus" }, - { "Rosenmontag" , "Rosenmontag" }, - { "Gründonnerstag" , "Gründonnerstag" }, - { "Karfreitag" , "Karfreitag" }, - { "D: Tag der Einheit" , "D: Tag der Einheit" }, - { "Ö: Nationalfeiertag" , "Ö: Nationalfeiertag" } -}; - -char *infotype[][MAXOSD] = { - { "*** G e b u r t s t a g %s (%d)%%0A" , "*** B i r t h d a y %s (%d)%%0A" }, - { "*** T e r m i n %s%%0A" , "*** D a t e %s%%0A" }, - { "*** T e r m i n %s um %02d:%02d%%0A" , "*** D a t e %s at %02d:%02d%%0A" }, - { "*** F e i e r t a g %s%%0A" , "*** H o l i d a y %s%%0A" }, -}; - -char *infomsg[][MAXOSD] = { - { "%d.%m.%Y" , "%m/%d/%Y" } -}; - -char *infomsgclock[] = { - "%H:%M" , "%H:%M:%S" -}; - -#if HAVE_DVB_API_VERSION == 3 -// longer breaking-line for dBox -char *http_br = {"**************************************************%0A"}; -#else -// shorter breaking-line for dreambox -char *http_br = {"**********************************%0A"}; -#endif - -//---------------------------------------------------- -// defines for database -#define MAXINFOLEN 80 -#define MAXENTRYS 200 -#define MAXCHECKS 10 -#define MAXCHECKDAYS 5 -#define MAXSTIMER 5 - -char *http_ln = {"%0A"}; -char *http_lines[MAXCHECKDAYS+1][MAXOSD] = { - {"*** Heute am %d. %s %d ***%%0A" ,"*** Today at %s, %d %d ***%%0A"}, - {"*** Morgen am %d. %s %d ***%%0A" ,"*** Tomorrow at %s, %d %d ***%%0A"}, - {"*** In zwei Tagen am %d. %s %d ***%%0A" ,"*** in two days at %s, %d %d ***%%0A"}, - {"*** In drei Tagen am %d. %s %d ***%%0A" ,"*** in three days at %s, %d %d ***%%0A"}, - {"*** In vier Tagen am %d. %s %d ***%%0A" ,"*** in four days at %s, %d %d ***%%0A"}, - {"*** Jetzt um %02d:%02d ***%%0A" ,"*** Now at %02d:%02d ***%%0A"} -}; - -//---------------------------------------------------- -// calendar calculations - -// for calculation the day of the week -const int monthcode[12] = { - 6, 2, 2, 5, 0, 3, 5, 1, 4, 6, 2, 4 -}; - -// days per month -const int monthdays[2][12] = { - { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }, // Normal years. - { 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 } // Leap years. -}; - -// How many days come before each month (0-12). -const int __mon_yday[2][13] = - { - { 0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365 }, // Normal years. - { 0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335, 366 } // Leap years. - }; - - -//---------------------------------------------------- -// functions - -void ShowMessage(int message); -int IsEvent(int day, int month, int year); -int WeekNumber( int y, int m, int d ); -int LeapYear(int year); - -//---------------------------------------------------- -// freetype stuff - -//#define FONT FONTDIR "/pakenham.ttf" -#define FONT "/share/fonts/neutrino.ttf" - -// definitions for string-rendering and size -enum {LEFT, CENTER, RIGHT, FIXEDLEFT, FIXEDCENTER, FIXEDRIGHT}; -enum {SMALL, NORMAL, BIG}; - -FT_Library library; -FTC_Manager manager; -FTC_SBitCache cache; -FTC_SBit sbit; -#if FREETYPE_MAJOR == 2 && FREETYPE_MINOR == 0 -FTC_ImageDesc desc; -#else -FTC_ImageTypeRec desc; -#endif -FT_Face face; -FT_UInt prev_glyphindex; -FT_Bool use_kerning; - -#if (FREETYPE_MAJOR > 2 || (FREETYPE_MAJOR == 2 && (FREETYPE_MINOR > 1 || (FREETYPE_MINOR == 1 && FREETYPE_PATCH >= 8)))) -# define FT_NEW_CACHE_API -#endif - -//---------------------------------------------------- -// config -char osd = 'G'; //! OSD language -int skin = 1; //! which skin to use -int startdelay = 30; //! startdelay for daemon to check event -char logging = 'Y'; //! logging to file -char audio = 'Y'; //! signal event per audio -int video=1; //! signal event per video (different types) -int sigtype=1; //! signal type -int sigmode=0; //! signal mode -char sigtime[80]; //! fix signal-times -int webport=80; //! webport for using webinterface -char webuser[32] = ""; //! for using webinterface -char webpass[32] = ""; //! for using webinterface -char disp_date = 'N'; //! display the date -char disp_clock = 'Y'; //! display the clock -char disp_sec = 'Y'; //! display the second -char disp_size = 'S'; //! display size 'S'mall, 'N'ormal, 'B'ig -int disp_color = 1; //! display color -int disp_back = 2; //! display back-color -int disp_detect = 1; //! detect color-map -char disp_mail = 'Y'; //! display mail notification -int iFontSize; //! Fontsize, converted from config -int iFont; //! Fonttype, converted from config - -FILE *fd_pid; //! PID file -int slog = 0; //! logging to sys -int pid; //! the PID -int sock; //! socket -int intervall; //! check every x seconds -char show_clock = 'Y'; //! show the clock -char show_clockatstart = 'Y'; -int nodelay=0; //! startup-delay -char encodedstring[512], decodedstring[512]; //! for web-authentification - -char *szFmtStr[] = { - "%02u" , "%04u" -}; - - -// waveheader -struct WAVEHEADER -{ - unsigned long ChunkID1; - unsigned long ChunkSize1; - unsigned long ChunkType; - unsigned long ChunkID2; - unsigned long ChunkSize2; - unsigned short Format; - unsigned short Channels; - unsigned long SampleRate; - unsigned long BytesPerSecond; - unsigned short BlockAlign; - unsigned short BitsPerSample; - unsigned long ChunkID3; - unsigned long ChunkSize3; -}; - -struct CHUNK -{ - unsigned long ChunkID; - unsigned long ChunkSize; -}; - -//---------------------------------------------------- -//---------------------------------------------------- -// defines for setting the output -#define FONTSIZE_SMALL 24 -#define FONTSIZE_NORMAL 32 -#define FONTSIZE_BIG 32 -#define MAXCLOCKINFOLEN 20 - -//---------------------------------------------------- -//---------------------------------------------------- -#define DAEMON_ON_NOSIGNAL 0 -#define DAEMON_ON_SIGNAL 1 -#define DAEMON_OFF 2 - -enum {SIGNORMAL, SIGPERIOD, SIGHOLIDAY, SIGALL }; //! used by sigmode -typedef struct tagTIMER -{ - int hour; - int min; -} STIMER, *PSTIMER; - -//---------------------------------------------------- -// variables -struct tm *at; //! actual time -time_t tt; //! actual time -int tCheck_year; //! year to check -int tCheck_mon; //! month to check -int tCheck_day; //! day to check -int tCheck_hour; //! hour to check -int tCheck_min; //! minute to check -int oldyear = 0; //! last date/time info -int oldmonth = 0; -int oldday = 0; -int oldhour = -1; -int oldmin = -1; -int iBlack = -1; -int iWhite = -1; -int iEventType[MAXCHECKDAYS+2][MAXCHECKS]; //! structure filled with event-index by IsEvent(), 0=today, 1 is today with time, 2 is next day, 3 is the following day -int iCntEntries; //! total number of entries in database -int iCntEvents[MAXCHECKDAYS+1]; //! found events -int iCntTmEvents; //! found events at this minute -STIMER tSignal[MAXSTIMER]; //! signal at certain times -int nEditStyle = 1; //! style for editing (RC, KB) -char online; //! are we connected to the daemon -int iFB = 0; //! is the framebuffer ok? -char timeinfo[22]; //! string for time -char versioninfo_d[12] = "?.??"; //! daemon version - -//---------------------------------------------------- -// database for all events -enum {FREE, BIRTHDAY, EVENT, PERIOD, HOLIDAY, COMMENT, UNUSED, SPACE}; -typedef struct tagEVT_DB -{ - int type; //! type of event: BIRTHDAY, EVENT, PERIOD, HOLIDAY or FREE (not used) - int year; //! year for the event , for birthday the birth-year, 0 for all years - int month; //! month of the event - int day; //! day of the event - int hour; //! hour of the event, -1 for all-day event - int min; //! minute of the event, ignore if hour == -1 - int days; //! days since 1.1. - int eyear; //! end-year for the event - int emonth; //! end-month of the event - int eday; //! end-day of the event - int ehour; //! end-hour of the event, -1 for all-day event - int emin; //! end-minute of the event, ignore if hour == -1 - int edays; //! days since 1.1. - char info[MAXINFOLEN]; //! info for the event -} EVT_DB, *PEVT_DB; - -EVT_DB eventdb[MAXENTRYS]; - -#define OFFSET_E 1 //! index for eastern -#define OFFSET_EM 2 //! index for eastern -#define OFFSET_H 3 //! index for "christi himmelfahrt" -#define OFFSET_P 4 //! index for "pfingsten" -#define OFFSET_PM 5 //! index for "pfingsten" -#define OFFSET_F 6 //! index for "fronleichnam" -#define OFFSET_A 7 //! aschermittwoch -#define OFFSET_M 8 //! Muttertag -#define OFFSET_SZ 9 //! Sommerzeit -#define OFFSET_WZ 10 //! Winterzeit -#define OFFSET_W0 11 //! heiliger abend -#define OFFSET_W1 12 //! 1. Weihnachtstag -#define OFFSET_W2 13 //! 2. Weihnachtstag -#define OFFSET_3K 14 //! hl. 3 Koenige -#define OFFSET_N 15 //! Neujahr -#define OFFSET_S 16 //! Silvester -#define OFFSET_V 17 //! Valentinstag -#define OFFSET_1M 18 //! 1. may -#define OFFSET_MH 19 //! maria himmelfahrt -#define OFFSET_NI 20 //! nikolaus -#define OFFSET_RM 21 //! rosenmontag -#define OFFSET_GD 22 //! gruendonnerstag -#define OFFSET_KF 23 //! karfreitag -#define OFFSET_ND 24 //! tag der deutschen einheit -#define OFFSET_NA 25 //! nationalfeiertag oesterreich -#define NOF_VDAYS 25 - - -// structure for the christian holidays in a year -typedef struct tagVariableDays -{ - int mon; // month - int day; // year -} VARIABLEDAY, *PVARIABLEDAY; - -VARIABLEDAY varaibledays[NOF_VDAYS]; - -//---------------------------------------------------- -// devs -int fb, fbdev; - -//---------------------------------------------------- -// framebuffer stuff -enum {FILL, GRID}; - -unsigned char *lfb = 0, *lbb = 0; - -struct fb_fix_screeninfo fix_screeninfo; -struct fb_var_screeninfo var_screeninfo; - -//struct fb_cmap *colormap = NULL; -char bps; - -int startx, starty, sx, ex, sy, ey; - -//---------------------------------------------------- -// object to render -enum {OBJ_CIRCLE, OBJ_HEART, OBJ_MARKER, OBJ_SCROLLUP, OBJ_SCROLLDN, OBJ_CLOCK, OBJ_LETTER}; -#define OBJ_SX 15 // lines for object -#define OBJ_SY 15 // columns for object - -char sym_letter[] = -{ - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 1,1,0,0,0,0,0,0,0,0,0,0,0,1,1, - 1,0,1,0,0,0,0,0,0,0,0,0,1,0,1, - 1,0,0,1,0,0,0,0,0,0,0,1,0,0,1, - 1,0,0,0,1,0,0,0,0,0,1,0,0,0,1, - 1,0,0,0,0,1,0,0,0,1,0,0,0,0,1, - 1,0,0,0,1,0,1,0,1,0,1,0,0,0,1, - 1,0,0,1,0,0,0,1,0,0,0,1,0,0,1, - 1,0,1,0,0,0,0,0,0,0,0,0,1,0,1, - 1,1,0,0,0,0,0,0,0,0,0,0,0,1,1, - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -}; - - - diff --git a/archive-sources/tuxcal/tuxcal.c b/archive-sources/tuxcal/tuxcal.c deleted file mode 100755 index c265d46..0000000 --- a/archive-sources/tuxcal/tuxcal.c +++ /dev/null @@ -1,3068 +0,0 @@ -/****************************************************************************** - * <<< TuxCal - Calendar Plugin >>> - * (c) Robert "robspr1" Spreitzer 2006 (robert.spreitzer@inode.at) - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - * - *----------------------------------------------------------------------------- - * $Log: tuxcal.c,v $ - * Revision 1.08 2007/05/17 16:19:47 dbluelle - * Make plugins compile with freeetype 2.1.x on dreambox (as needed for Neutrino on Dreambox) - * - * Revision 1.07 2006/03/05 15:59:37 robspr1 - * - use /tmp/keyboard.lck to signal decoding of the keyboard - * - * Revision 1.06 2006/02/24 08:13:29 robspr1 - * - bugfix Editor background - * - * Revision 1.05 2006/02/23 23:07:25 robspr1 - * - change SKIN2, signal up to 5 days, toggle clock-display file - * - * Revision 1.04 2006/02/18 14:57:13 robspr1 - * add signaling at fixed times, some small fixes - * - * Revision 1.03 2006/02/17 21:29:36 robspr1 - * -add command to switch/hide the clock - * - * Revision 1.02 2006/02/15 19:11:33 robspr1 - * first version in CVS - * - * Revision 1.01 2006/02/12 23:10:00 robspr1 - * - bugfix reading params POS_X and POS_Y (needed by the daemon) - * - * Revision 1.00 2006/02/06 20:00:00 robspr1 - * - first version - ******************************************************************************/ -// lots of code is from the tuxmail-project - -#include "tuxcal.h" -#define _GNU_SOURCE -#include - -void read_neutrino_osd_conf(int *ex,int *sx,int *ey, int *sy) -{ - const char *filename="/var/tuxbox/config/neutrino.conf"; - const char spres[][5]={"","_crt","_lcd"}; - char sstr[4][32]; - int pres=-1, loop, *sptr[4]={ex, sx, ey, sy}; - char *buffer; - size_t len; - ssize_t read; - FILE* fd; - - fd = fopen(filename, "r"); - if(fd){ - buffer=NULL; - len = 0; - while ((read = getline(&buffer, &len, fd)) != -1){ - sscanf(buffer, "screen_preset=%d", &pres); - } - if(buffer) - free(buffer); - rewind(fd); - ++pres; - sprintf(sstr[0], "screen_EndX%s=%%d", spres[pres]); - sprintf(sstr[1], "screen_StartX%s=%%d", spres[pres]); - sprintf(sstr[2], "screen_EndY%s=%%d", spres[pres]); - sprintf(sstr[3], "screen_StartY%s=%%d", spres[pres]); - - buffer=NULL; - len = 0; - while ((read = getline(&buffer, &len, fd)) != -1){ - for(loop=0; loop<4; loop++) { - sscanf(buffer, sstr[loop], sptr[loop]); - } - } - fclose(fd); - if(buffer) - free(buffer); - } -} - -/****************************************************************************** - * ReadConf - ******************************************************************************/ -/*! - * read configuration-file - - \param : none - \return : none -*/ -void ReadConf() -{ - FILE *fd_conf; - char *ptr; - char line_buffer[256]; - - // open config-file - if (!(fd_conf = fopen(CFGPATH CFGFILE, "r"))) - { - printf("TuxCal \n"); - return; - } - - // read config-file line-by-line - while(fgets(line_buffer, sizeof(line_buffer), fd_conf)) - { - if ((ptr = strstr(line_buffer, "STARTDELAY="))) - { - sscanf(ptr + 11, "%d", &startdelay); - } - else if((ptr = strstr(line_buffer, "INTERVALL="))) - { - sscanf(ptr + 10, "%d", &intervall); - } - else if((ptr = strstr(line_buffer, "LOGGING="))) - { - sscanf(ptr + 8, "%c", &logging); - } - else if((ptr = strstr(line_buffer, "AUDIO="))) - { - sscanf(ptr + 6, "%c", &audio); - } - else if((ptr = strstr(line_buffer, "VIDEO="))) - { - sscanf(ptr + 6, "%d", &video); - } - else if((ptr = strstr(line_buffer, "SIGNAL="))) - { - sscanf(ptr + 7, "%d", &sigtype); - } - else if((ptr = strstr(line_buffer, "SIGMODE="))) - { - sscanf(ptr + 8, "%d", &sigmode); - } - else if((ptr = strstr(line_buffer, "SIGTIME="))) - { - sscanf(ptr + 8, "%s", &sigtime[0]); - } - else if((ptr = strstr(line_buffer, "OSD="))) - { - sscanf(ptr + 4, "%c", &osd); - } - else if((ptr = strstr(line_buffer, "SKIN="))) - { - sscanf(ptr + 5, "%d", &skin); - } - else if((ptr = strstr(line_buffer, "WEBPORT="))) - { - sscanf(ptr + 8, "%d", &webport); - } - else if((ptr = strstr(line_buffer, "WEBUSER="))) - { - sscanf(ptr + 8, "%s", &webuser[0]); - } - else if((ptr = strstr(line_buffer, "WEBPASS="))) - { - sscanf(ptr + 8, "%s", &webpass[0]); - } - else if((ptr = strstr(line_buffer, "POS_X="))) - { - sscanf(ptr + 6, "%d", &cstartx); - } - else if((ptr = strstr(line_buffer, "POS_Y="))) - { - sscanf(ptr + 6, "%d", &cstarty); - } - else if((ptr = strstr(line_buffer, "SHOW="))) - { - sscanf(ptr + 5, "%c", &show_clock); - } - else if((ptr = strstr(line_buffer, "DATE="))) - { - sscanf(ptr + 5, "%c", &disp_date); - } - else if((ptr = strstr(line_buffer, "CLOCK="))) - { - sscanf(ptr + 6, "%c", &disp_clock); - } - else if((ptr = strstr(line_buffer, "SEC="))) - { - sscanf(ptr + 4, "%c", &disp_sec); - } - else if((ptr = strstr(line_buffer, "SIZE="))) - { - sscanf(ptr + 5, "%c", &disp_size); - } - else if((ptr = strstr(line_buffer, "COLOR="))) - { - sscanf(ptr + 6, "%d", &disp_color); - } - else if((ptr = strstr(line_buffer, "BACK="))) - { - sscanf(ptr + 5, "%d", &disp_back); - } - else if((ptr = strstr(line_buffer, "DETECT="))) - { - sscanf(ptr + 7, "%d", &disp_detect); - } - else if((ptr = strstr(line_buffer, "MAIL="))) - { - sscanf(ptr + 5, "%c", &disp_mail); - } - } - - // close config-file - fclose(fd_conf); - - // ---------------- - // check config - // on-screen-display german or english - if (osd != 'G' && osd != 'E') - { - printf("TuxCal \n", osd); - osd = 'G'; - } - switch (osd) - { - case 'G': osdidx=0; break; - case 'E': osdidx=1; break; - } - - if (!startdelay) startdelay = 30; // default 30 seconds delay - if (!intervall) intervall = 1; // default check every 1 second - - // we have different skins - switch(skin){ - case 1: - skin_offset=0; - break; - case 2: - skin_offset=20; - break; - case 3: - skin_offset=40; - break; - default: - printf("TuxCal \n", skin); - skin_offset=0; - skin=1; - break; - } -} - -/****************************************************************************** - * WriteConf - ******************************************************************************/ -/*! - * write the configuration back to the file - - \param : none - \return : 1:OK 0:FAILED -*/ -int WriteConf() -{ - FILE *fd_conf; - - // open config-file - if (!(fd_conf = fopen(CFGPATH CFGFILE , "w"))) - { - return 0; - } - - fprintf(fd_conf, "STARTDELAY=%d\n", startdelay); - fprintf(fd_conf, "INTERVALL=%d\n", intervall); - fprintf(fd_conf, "LOGGING=%c\n", logging); - fprintf(fd_conf, "AUDIO=%c\n", audio); - fprintf(fd_conf, "VIDEO=%d\n", video); - fprintf(fd_conf, "SIGNAL=%d\n", sigtype); - fprintf(fd_conf, "SIGMODE=%d\n", sigmode); - fprintf(fd_conf, "SIGTIME=%s\n\n", sigtime); - fprintf(fd_conf, "OSD=%c\n", osd); - fprintf(fd_conf, "SKIN=%d\n\n", skin); - fprintf(fd_conf, "WEBPORT=%d\n", webport); - fprintf(fd_conf, "WEBUSER=%s\n", webuser); - fprintf(fd_conf, "WEBPASS=%s\n\n", webpass); - fprintf(fd_conf, "POS_X=%d\n", cstartx); - fprintf(fd_conf, "POS_Y=%d\n", cstarty); - fprintf(fd_conf, "SHOW=%c\n", show_clock); - fprintf(fd_conf, "DATE=%c\n", disp_date); - fprintf(fd_conf, "CLOCK=%c\n", disp_clock); - fprintf(fd_conf, "SEC=%c\n", disp_sec); - fprintf(fd_conf, "SIZE=%c\n", disp_size); - fprintf(fd_conf, "COLOR=%d\n", disp_color); - fprintf(fd_conf, "BACK=%d\n", disp_back); - fprintf(fd_conf, "DETECT=%d\n", disp_detect); - fprintf(fd_conf, "MAIL=%c\n\n", disp_mail); - - fclose(fd_conf); - return 1; -} - -/****************************************************************************** - * ControlDaemon - ******************************************************************************/ -/* - * we do have a connection to a daemon, this daemon will signal an alarm - - \param command : different command-codes, e.g. GET_VERSION - \return : 1:OK 0:FAILED -*/ -int ControlDaemon(int command) -{ - int fd_sock; // socket to daemon - struct sockaddr_un srvaddr; - socklen_t addrlen; - - // setup connection - srvaddr.sun_family = AF_UNIX; - strcpy(srvaddr.sun_path, SCKFILE); - addrlen = sizeof(srvaddr.sun_family) + strlen(srvaddr.sun_path); - - // open socket - if ((fd_sock = socket(PF_UNIX, SOCK_STREAM, 0)) == -1) - { - printf("TuxCal \n"); - return 0; - } - - // connect socket - if (connect(fd_sock, (struct sockaddr*)&srvaddr, addrlen) == -1) - { - printf("TuxCal \n"); - close(fd_sock); - return 0; - } - - // send command - // sending is very simple: we send a command and (perhaps) we wait for an answer - switch(command) - { - case GET_STATUS: - { - send(fd_sock, "G", 1, 0); - recv(fd_sock, &online, 1, 0); - } break; - - case SET_STATUS: - { - send(fd_sock, "S", 1, 0); - send(fd_sock, &online, 1, 0); - } break; - - case GET_VERSION: - { - send(fd_sock, "V", 1, 0); - recv(fd_sock, &versioninfo_d, sizeof(versioninfo_d), 0); - } break; - - case RELOAD_DB: - { - send(fd_sock, "R", 1, 0); - } break; - - case TOGGLE_CLOCK: - { - send(fd_sock, "C", 1, 0); - } break; - } - - // close connection - close(fd_sock); - return 1; -} - -/****************************************************************************** - * GetRCCode - ******************************************************************************/ -/*! - * this is the remote-control function, similar one is used in TuxMail - * very different for dBox and Dreambox - - \param : none - \return : remote-control or keyboard-code -*/ -#define REPEAT_TIMER 3 -int GetRCCode() -{ - static int count = 0; - //get code - struct input_event ev; - static __u16 rc_last_key = KEY_RESERVED; - static __u16 rc_last_code = KEY_RESERVED; - if ( read ( rc, &ev, sizeof ( ev ) ) == sizeof ( ev ) ) - { - if ( ev.value ) - { - if ( ev.code == rc_last_key ) - { - if ( count < REPEAT_TIMER ) - { - count++; - rccode = -1; - return 1; - } - } - else - count = 0; - rc_last_key = ev.code; - switch ( ev.code ) - { - case KEY_UP: rccode = RC_UP; break; - case KEY_DOWN: rccode = RC_DOWN; break; - case KEY_LEFT: rccode = RC_LEFT; break; - case KEY_RIGHT: rccode = RC_RIGHT; break; - case KEY_OK: rccode = RC_OK; break; - case KEY_RED: rccode = RC_RED; break; - case KEY_GREEN: rccode = RC_GREEN; break; - case KEY_YELLOW: rccode = RC_YELLOW; break; - case KEY_BLUE: rccode = RC_BLUE; break; - case KEY_INFO: rccode = RC_HELP; break; - case KEY_MENU: rccode = RC_DBOX; break; - case KEY_EXIT: rccode = RC_HOME; break; - case KEY_POWER: rccode = RC_STANDBY; break; - default: - if ( ev.code > 0x7F ) - { - rccode = 0; - if ( ev.code == 0x110 ) - { - rccode = RC_ON; - } - } - else - { - rccode = rctable[ev.code & 0x7F]; - } - if ( rc_last_code == RC_LSHIFT ) - { - if ( ev.code <= 0x56 ) //(sizeof(rcshifttable)/sizeof(int)-1) - { - rccode = rcshifttable[ev.code]; - } - } - else if ( rc_last_code == RC_ALTGR ) - { - if ( ev.code <= 0x56 ) //(sizeof(rcaltgrtable)/sizeof(int)-1) - { - rccode = rcaltgrtable[ev.code]; - } - } - else if ( rc_last_code == RC_ALT ) - { - if ( ( ev.code >=2 ) && ( ev.code <= 11 ) ) - { - rccode = ( ev.code-1 ) | 0x0200; - } - } -// if( !rccode ) - { -// rccode = -1; - } - - } - rc_last_code = rccode; - return 1; - } - else - { - rccode = -1; - rc_last_key = KEY_RESERVED; - rc_last_code = KEY_RESERVED; - } - } - - count=0; - if ( read ( kb, &ev, sizeof ( ev ) ) == sizeof ( ev ) ) - { - if ( ev.value ) - { - if ( ev.code == rc_last_key ) - { - if ( count < REPEAT_TIMER ) - { - count++; - rccode = -1; - return 1; - } - } - else - count = 0; - rc_last_key = ev.code; - switch ( ev.code ) - { - case KEY_UP: rccode = RC_UP; break; - case KEY_DOWN: rccode = RC_DOWN; break; - case KEY_LEFT: rccode = RC_LEFT; break; - case KEY_RIGHT: rccode = RC_RIGHT; break; - case KEY_OK: rccode = RC_OK; break; - case KEY_RED: rccode = RC_RED; break; - case KEY_GREEN: rccode = RC_GREEN; break; - case KEY_YELLOW: rccode = RC_YELLOW; break; - case KEY_BLUE: rccode = RC_BLUE; break; - case KEY_INFO: rccode = RC_HELP; break; - case KEY_MENU: rccode = RC_DBOX; break; - case KEY_EXIT: rccode = RC_HOME; break; - case KEY_POWER: rccode = RC_STANDBY; break; - default: - if ( ev.code > 0x7F ) - { - rccode = 0; - if ( ev.code == 0x110 ) - { - rccode = RC_ON; - } - } - else - { - rccode = rctable[ev.code & 0x7F]; - } - if ( rc_last_code == RC_LSHIFT ) - { - if ( ev.code <= 0x56 ) //(sizeof(rcshifttable)/sizeof(int)-1) - { - rccode = rcshifttable[ev.code]; - } - } - else if ( rc_last_code == RC_ALTGR ) - { - if ( ev.code <= 0x56 ) //(sizeof(rcaltgrtable)/sizeof(int)-1) - { - rccode = rcaltgrtable[ev.code]; - } - } - else if ( rc_last_code == RC_ALT ) - { - if ( ( ev.code >=2 ) && ( ev.code <= 11 ) ) - { - rccode = ( ev.code-1 ) | 0x0200; - } - } -// if( !rccode ) - { -// rccode = -1; - } - - } - rc_last_code = rccode; - return 1; - } - else - { - rccode = -1; - rc_last_key = KEY_RESERVED; - rc_last_code = KEY_RESERVED; - } - } - time(&tt); // read the actual time - at = localtime(&tt); - - rccode = -1; - usleep ( 1000000/100 ); - return 0; -} - -/****************************************************************************** - * MyFaceRequester - ******************************************************************************/ -/*! - * load font - - \param face_id : FTC_FaceID - \param library : FT_Library - \param request_data : FT_Pointer - \param afacs : FT_Face* - \return : FT_Error -*/ -FT_Error MyFaceRequester(FTC_FaceID face_id, FT_Library library, FT_Pointer request_data, FT_Face *aface) -{ - FT_Error result; - - result = FT_New_Face(library, face_id, 0, aface); - - if (!result) printf("TuxCal \n", (char*)face_id); - else printf("TuxCal \n", (char*)face_id); - - return result; -} - - -/****************************************************************************** - * RenderChar - ******************************************************************************/ -/*! - * render a character to the screen - - \param currentchar : FT_ULong - \param sx : startposition x - \param sy : startposition y - \param ex : endposition x - \param color : color - \return : charwidth -*/ -int RenderChar(FT_ULong currentchar, int sx, int sy, int ex, int color) -{ - int row, pitch, bit, x = 0, y = 0; - FT_Error error; - FT_UInt glyphindex; - FT_Vector kerning; - FTC_Node anode; - currentchar=currentchar & 0xFF; - //load char - if (!(glyphindex = FT_Get_Char_Index(face, currentchar))) - { - printf("TuxCal \n", (int)currentchar); - return 0; - } - - if ((error = FTC_SBitCache_Lookup(cache, &desc, glyphindex, &sbit, &anode))) - { - printf("TuxCal \n", (int)currentchar, error); - return 0; - } - - if (use_kerning) - { - FT_Get_Kerning(face, prev_glyphindex, glyphindex, ft_kerning_default, &kerning); - prev_glyphindex = glyphindex; - kerning.x >>= 6; - } - else - { - kerning.x = 0; - } - - // render char - if (color != -1) // don't render char, return charwidth only - { - if (sx + sbit->xadvance >= ex) return -1; // limit to maxwidth - - for (row = 0; row < sbit->height; row++) - { - for (pitch = 0; pitch < sbit->pitch; pitch++) - { - for (bit = 7; bit >= 0; bit--) - { - if (pitch*8 + 7-bit >= sbit->width) - { - break; // render needed bits only - } - - if ((sbit->buffer[row * sbit->pitch + pitch]) & 1<left + kerning.x + x ) *4 + fix_screeninfo.line_length* ( starty + sy - sbit->top + y ),bgra[color+skin_offset],4 ); - } - - x++; - } - } - x = 0; - y++; - } - } - - // return charwidth - return sbit->xadvance + kerning.x; -} - -/****************************************************************************** - * GetStringLen - ******************************************************************************/ -/*! - * calculate used pixels on screen for output - -*/ -int GetStringLen( char *string) -{ - int stringlen = 0; - - // reset kerning - prev_glyphindex = 0; - - // calc len - while (*string != '\0') - { - stringlen += RenderChar(*string, -1, -1, -1, -1); - string++; - } - - return stringlen; -} - -/****************************************************************************** - * RenderString - ******************************************************************************/ -/*! - * render a string to the screen - -*/ -void RenderString( char *string, int sx, int sy, int maxwidth, int layout, int size, int color) -{ - int stringlen, ex, charwidth; - - // set size - if(size == SMALL) - { - desc.width = desc.height = FONTHEIGHT_SMALL; - } - else if (size == NORMAL) - { - desc.width = desc.height = FONTHEIGHT_NORMAL; - } - else - { - desc.width = desc.height = FONTHEIGHT_BIG; - } - - // set alignment - if ((layout != LEFT) && (layout != FIXEDLEFT)) - { - stringlen = GetStringLen( (char*)string); - - switch(layout) - { - case FIXEDCENTER: - stringlen = (desc.width/2) * strlen(string); - case CENTER: - { - if(stringlen < maxwidth) - { - sx += (maxwidth - stringlen)/2; - } - } break; - - case FIXEDRIGHT: - stringlen = (desc.width/2) * strlen(string); - case RIGHT: - { - if(stringlen < maxwidth) - { - sx += maxwidth - stringlen; - } - } break; - } - } - - // reset kerning - prev_glyphindex = 0; - - // render string - ex = sx + maxwidth; - - while (*string != '\0') - { - if ((charwidth = RenderChar(*string, sx, sy, ex, color)) == -1) return; // string > maxwidth - - if ((layout == FIXEDLEFT) || (layout == FIXEDCENTER) || (layout == FIXEDRIGHT)) - sx += (desc.width/2); - else - sx += charwidth; - string++; - } -} - -/****************************************************************************** - * RenderBox - ******************************************************************************/ -/*! - * render a box to the screen - - \param sx : startposition x - \param sy : startposition y - \param ex : endposition x - \param ey : endposition y - \param mode : mode for painting (FILL or GRID) - \param color : color to paint with - \return : none -*/ -void RenderBox ( int sx, int sy, int ex, int ey, int mode, int color ) -{ - int loop; - int tx; - - if ( mode == FILL ) - { - for ( ; sy < ey; sy++ ) - { -// memset(lbb + startx + sx + var_screeninfo.xres*(starty + sy), color, ex-sx + 1); - for ( tx=0; tx < ( ex-sx ); tx++ ) - { - memcpy ( lbb + startx*4 + sx*4 + ( tx*4 ) + fix_screeninfo.line_length* ( starty + sy ),bgra[color+skin_offset],4 ); - } - } - } - else - { - // hor lines - - for ( loop = sx; loop <= ex; loop++ ) - { - memcpy ( lbb + startx*4+loop*4 + fix_screeninfo.line_length* ( sy+starty ), bgra[color+skin_offset], 4 ); - memcpy ( lbb + startx*4+loop*4 + fix_screeninfo.line_length* ( sy+1+starty ), bgra[color+skin_offset], 4 ); - memcpy ( lbb + startx*4+loop*4 + fix_screeninfo.line_length* ( ey-1+starty ), bgra[color+skin_offset], 4 ); - memcpy ( lbb + startx*4+loop*4 + fix_screeninfo.line_length* ( ey+starty ), bgra[color+skin_offset], 4 ); - } - - // columns - - for ( loop = sy; loop <= ey; loop++ ) - { - memcpy ( lbb + startx*4+sx*4 + fix_screeninfo.line_length* ( loop+starty ), bgra[color+skin_offset], 4 ); - memcpy ( lbb + startx*4+ ( sx+1 ) *4 + fix_screeninfo.line_length* ( loop+starty ), bgra[color+skin_offset], 4 ); - memcpy ( lbb + startx*4+ ( ex-1 ) *4 + fix_screeninfo.line_length* ( loop+starty ), bgra[color+skin_offset], 4 ); - memcpy ( lbb + startx*4+ex*4 + fix_screeninfo.line_length* ( loop+starty ), bgra[color+skin_offset], 4 ); - } - } -} - -/****************************************************************************** - * RenderInt - ******************************************************************************/ -/*! - * render a integer to the screen - -*/ -void RenderInt(unsigned char *string, int sx, int sy, int maxwidth, int layout, int size, int color, int colorgrid, int colorfill) -{ - int x,y,cx,cy; - int sizey=FONTSIZE_NORMAL; - - if (size==SMALL) sizey=FONTSIZE_SMALL; - else if (size==BIG) sizey=FONTSIZE_BIG; - - x=sx-5; - y=sy-sizey+8; - cx=x+maxwidth+3; - cy=y+sizey; - if (colorfill!=-1) RenderBox(x,y,cx,cy,FILL,colorfill); - if (colorgrid!=-1) RenderBox(x,y,cx,cy,GRID,colorgrid); - - RenderString(string,sx,sy,maxwidth,layout,size,color); -} - -/****************************************************************************** - * RenderSObject - ******************************************************************************/ -/*! - * render an object to the screen paint only the pixels which are set - - \param sx : startposition x - \param sy : startposition y - \param color : color to paint with - \param iType : index for the object to paint - \return : none -*/ -void RenderSObject(int sx, int sy, int color, int iType) -{ - int x, y; - char* pObj=circle; - - // choose the object - if (iType == OBJ_CIRCLE) pObj=circle; - if (iType == OBJ_HEART) pObj=heart; - if (iType == OBJ_MARKER) pObj=marker; - if (iType == OBJ_SCROLLUP) pObj=scroll_up; - if (iType == OBJ_SCROLLDN) pObj=scroll_dn; - if (iType == OBJ_CLOCK) pObj=symbolclock; - - // render - for (y = 0; y < OBJ_SY; y++) // for all columns - { - for (x = 0; x < OBJ_SX; x++) // for all lines - { - if (*pObj++) // only paint if mask-value set - memcpy(lbb + startx*4 + sx*4 + x*4 + fix_screeninfo.line_length*(starty + sy + y), bgra[color+skin_offset], 4); - - } - } -} - -/****************************************************************************** - * MessageBox - ******************************************************************************/ -/*! - * message-box which asks a question - * use can choose OK or NO/Exit - - \param header : text which is displayed in the header of the messagebox - \param question : the text (question) - \return : 1:OK/Yes 0:Exit/No -*/ -int MessageBox(char* header, char* question) -{ - // paint the box - RenderBox(MSGBOX_SX, MSGBOX_SY, MSGBOX_EX, HEADERSTART, FILL, SKIN0); - RenderBox(MSGBOX_SX, HEADERSTART, MSGBOX_EX, MSGBOX_EY, FILL, SKIN1); - RenderBox(MSGBOX_SX, MSGBOX_SY, MSGBOX_EX, MSGBOX_EY, GRID, SKIN2); - RenderBox(MSGBOX_SX, HEADERSTART, MSGBOX_EX, MSGBOX_EY, GRID, SKIN2); - - // render the strings - RenderString(header, MSGBOX_SX+2, HEADERTEXTSTART, TEXTWIDTH, CENTER, BIG, ORANGE); - RenderString(question, MSGBOX_SX+2, TEXTSTART, TEXTWIDTH, CENTER, BIG, WHITE); - - // paint the buttons - RenderBox(BUTTONSX, BUTTONSY, BUTTONSX+BUTTONX, BUTTONSY+FONTSIZE_SMALL, FILL, SKIN2); - RenderString(( char* )"OK", BUTTONSX+2, BUTTONSY+FONTSIZE_SMALL-5, BUTTONX-4, CENTER, SMALL, WHITE); - RenderBox(BUTTONSX+2*BUTTONX, BUTTONSY, BUTTONSX+3*BUTTONX, BUTTONSY+FONTSIZE_SMALL, FILL, SKIN2); - RenderString(( char* )"EXIT", BUTTONSX+2*BUTTONX+2, BUTTONSY+FONTSIZE_SMALL-5, BUTTONX-4, CENTER, SMALL, WHITE); - - // output to framebuffer - memcpy(lfb, lbb, fix_screeninfo.line_length*var_screeninfo.yres ); - - // now wait for key - while (1) - { - GetRCCode(); - // OK or RETURN - if ( rccode == RC_OK ) - { - rccode = -1; // forget the pressed key - return 1; // return YES - } - // HOME or EXIT == NO - if ( rccode == RC_HOME ) - { - rccode = -1; // forget the pressed key - return 0; // return NO - } - } - return 0; -} - -/****************************************************************************** - * ShowMessage - ******************************************************************************/ -/*! - * output a message in a window on the screen - -*/ -void ShowMessage(int message) -{ - char info[80]; - - // layout - RenderBox(MSGBOX_SX, MSGBOX_SY, MSGBOX_EX, HEADERSTART, FILL, SKIN0); - RenderBox(MSGBOX_SX, HEADERSTART, MSGBOX_EX, MSGBOX_EY, FILL, SKIN1); - RenderBox(MSGBOX_SX, MSGBOX_SY, MSGBOX_EX, MSGBOX_EY, GRID, SKIN2); - RenderBox(MSGBOX_SX, HEADERSTART, MSGBOX_EX, MSGBOX_EY, GRID, SKIN2); - - // message - if (message != INFO) - { - RenderString("TuxCal Statusinfo", MSGBOX_SX+2, HEADERTEXTSTART, TEXTWIDTH, CENTER, BIG, ORANGE); - strcpy(info,infomsg[message][osdidx]); - } - else - { - ControlDaemon(GET_VERSION); - sprintf(info, "TuxCal (P%s/D%s)", versioninfo_p, versioninfo_d); - RenderString(info, MSGBOX_SX+2, HEADERTEXTSTART, TEXTWIDTH, CENTER, BIG, ORANGE); - sprintf(info,"(c) 2006 Robert \"robspr1\" Spreitzer"); - } - - RenderString(info, MSGBOX_SX+2, TEXTSTART, TEXTWIDTH, CENTER, NORMAL, WHITE); - - memcpy(lfb, lbb, fix_screeninfo.line_length*var_screeninfo.yres ); - - // wait for OK keystroke - while (1) - { - GetRCCode(); - if (( rccode == RC_OK ) || ( rccode == RC_HOME )) - { - break; - } - if ((message == INFO) && (rccode == RC_HELP)) - { - //TODO: open and show help-file - break; - } - } - rccode = -1; -} - - -/****************************************************************************** - * PaintEdit - ******************************************************************************/ -/*! - * paint the edit-window - - \param pEvt : EVT_DB* pointer to event-object - \param iEditLine : line just being edited - \param iEditCol : column in line just being edited - \return : none -*/ -int* PaintEdit(EVT_DB* pEvt, int iEditLine, int iEditCol) -{ - char info[80]; - int x, y, l, t, r, b; - int iColor=RED; - int* pIEdit=NULL; - - // background (just for testing) - RenderBox(0, 0, MAXSCREEN_X, MAXSCREEN_Y, FILL, GREY); - // sprintf(info,"%d %d %d %d %d %d",last,start,end,akt,sel,infolines); - // RenderString(info,0,GRIDLINE-2,MAXSCREEN_X-4, LEFT, SMALL, GREY); - // return; - - // header (paint date) - RenderBox(0, 0, MAXSCREEN_X,GRIDLINE, FILL, SKIN3); - RenderBox(0, 0, MAXSCREEN_X,GRIDLINE, GRID, SKIN2); - RenderBox(MAXSCREEN_X/2, 0, MAXSCREEN_X/2,GRIDLINE, GRID, SKIN2); - if (osdidx == 0) sprintf(info,"%u. %s %u",tShow_day,monthmsg[tShow_mon-1][osdidx],tShow_year); - else sprintf(info,"%s %u, %u",monthmsg[tShow_mon-1][osdidx],tShow_day,tShow_year); - RenderString(info,0+4,GRIDLINE-4,MAXSCREEN_X-4, LEFT, NORMAL, BLACK); - - int iY=2*GRIDLINE; - int iX=EDITX; - - RenderString(infotype[pEvt->type-1][osdidx],20,iY,MAXSCREEN_X-4,LEFT,NORMAL,RED); - iY+=GRIDLINE; - - int i; - int *pint=NULL; - int colorfill=WHITE; - int iStrLen=0; - - for (i=1;i<11;i++) - { - switch (i) - { - case 1: - iX=EDITX; - RenderString(szEditBoxInfo[5][osdidx], iX ,iY,MAXSCREEN_X-2*iX, LEFT, NORMAL, BLUE); - RenderString(szEditBoxInfo[4][osdidx], iX ,iY+GRIDLINE,MAXSCREEN_X-2*iX, FIXEDLEFT, NORMAL, BLUE); - iX+=5; - iY+=2*GRIDLINE; - iStrLen=0; - pint=&pEvt->day; - break; - case 2: - iX+=FONTSIZE_NORMAL*3; - pint=&pEvt->month; - break; - case 3: - iX+=FONTSIZE_NORMAL*3; - if (pEvt->year) - { - pint=&pEvt->year; - iStrLen=1; - } - else pint=NULL; - break; - case 4: - iX+=FONTSIZE_NORMAL*4; - if (pEvt->hour!=-1) - { - pint=&pEvt->hour; - iStrLen=0; - } - else pint=NULL; - break; - case 5: - iX+=FONTSIZE_NORMAL*3; - if (pEvt->hour!=-1) pint=&pEvt->min; - else pint=NULL; - break; - - case 6: - iX=EDITX; - if (pEvt->type == PERIOD) - { - RenderString(szEditBoxInfo[6][osdidx], iX ,iY+GRIDLINE,MAXSCREEN_X-2*iX, LEFT, NORMAL, BLUE); - RenderString(szEditBoxInfo[4][osdidx], iX ,iY+2*GRIDLINE,MAXSCREEN_X-2*iX, FIXEDLEFT, NORMAL, BLUE); - } - iX+=5; - iY+=3*GRIDLINE; - iStrLen=0; - if (pEvt->type != PERIOD) - { - i=10; - pint=NULL; - break; - } - iStrLen=0; - pint=&pEvt->eday; - break; - case 7: - iX+=FONTSIZE_NORMAL*3; - pint=&pEvt->emonth; - break; - case 8: - iX+=FONTSIZE_NORMAL*3; - if (pEvt->eyear) - { - pint=&pEvt->eyear; - iStrLen=1; - } - else pint=NULL; - break; - case 9: - iX+=FONTSIZE_NORMAL*4; - if (pEvt->ehour!=-1) - { - pint=&pEvt->ehour; - iStrLen=0; - } - else pint=NULL; - break; - case 10: - iX+=FONTSIZE_NORMAL*3; - if (pEvt->ehour!=-1) pint=&pEvt->emin; - else pint=NULL; - break; - } - - if (pint) - { - sprintf(info,szFmtStr[iStrLen],*pint); - - if (iEditLine==i) colorfill=YELLOW; - else colorfill=WHITE; - RenderInt(info, iX ,iY,(iStrLen+1)*FONTSIZE_NORMAL, FIXEDLEFT, NORMAL, BLACK, SKIN2, colorfill); - if (iEditLine==i) - { - info[iEditCol+1]=0; - RenderInt(&info[iEditCol], iX+(iEditCol*FONTSIZE_NORMAL/2), iY, FONTSIZE_NORMAL/2, FIXEDLEFT, NORMAL, WHITE, TRANSP, BLUE); - pIEdit=pint; - } - } - } - - iY+=2*GRIDLINE; - if (iEditLine==11) colorfill=YELLOW; - else colorfill=WHITE; - RenderInt(pEvt->info,EDITX+5,iY,FONTSIZE_NORMAL*16, FIXEDLEFT, NORMAL, BLACK, SKIN2,colorfill); - if (strlen(pEvt->info)>MAXINFOEDITLEN/2) - RenderInt(&pEvt->info[MAXINFOEDITLEN/2],EDITX+5,iY+GRIDLINE,FONTSIZE_NORMAL*16, FIXEDLEFT, NORMAL, BLACK,SKIN2,colorfill); - if (iEditLine==11) - { - info[0]=pEvt->info[iEditCol]; - info[1]=0; - RenderInt(info, EDITX+5+((iEditCol-((iEditCol>=MAXINFOEDITLEN/2)?MAXINFOEDITLEN/2:0))*FONTSIZE_NORMAL/2), iY+((iEditCol>=MAXINFOEDITLEN/2)?GRIDLINE:0), FONTSIZE_NORMAL/2, FIXEDLEFT, NORMAL, WHITE, TRANSP, BLUE); - } - - // footer (paint buttons, function-keys) - RenderBox(0, EDITFOOTER_Y, MAXSCREEN_X,MAXSCREEN_Y, FILL, SKIN3); - RenderBox(0, EDITFOOTER_Y, MAXSCREEN_X,MAXSCREEN_Y, GRID, SKIN2); - for ( y = 0; y < 4; y++ ) - { - t=EDITFOOTER_Y + KEYBOX_SPACE + y*(KEYBOX_HEIGHT+KEYBOX_SPACE); - b=EDITFOOTER_Y + KEYBOX_SPACE + y*(KEYBOX_HEIGHT+KEYBOX_SPACE)+KEYBOX_HEIGHT; - - l=20 + 3*(KEYBOX_WIDTH+KEYBOX_SPACE); - r=20 + 3*(KEYBOX_WIDTH+KEYBOX_SPACE)+KEYBOX_WIDTH; - - switch (y) - { - case 0: iColor=RED; break; - case 1: iColor=GREEN; break; - case 2: iColor=YELLOW; break; - case 3: iColor=BLUE; break; - } - - RenderSObject(l,t+6,iColor,OBJ_CIRCLE); - RenderString(szEditBoxInfo[y][osdidx],20 + l, b - 4,MAXSCREEN_X/2, LEFT, SMALL, ORANGE); - - // paint function-buttons - for ( x = 0; x < 3; x++) - { - l=10 + x*(KEYBOX_WIDTH+KEYBOX_SPACE); - r=10 + x*(KEYBOX_WIDTH+KEYBOX_SPACE)+KEYBOX_WIDTH; - - RenderBox(l, t, r, b, FILL, SKIN1); - RenderBox(l, t, r, b, GRID, SKIN2); - - if( nEditStyle == 3 ) - { - if (szKeyBBoxKey[x+y*3][0]) - { - RenderString(szKeyBBoxKey[x+y*3],5 + l, b - 4 ,25,LEFT, SMALL, WHITE); - RenderString(szKeyBBoxInfo[x+y*3][osdidx],20 + l, b - 4,60, RIGHT, SMALL, ORANGE); - } - } - else - { - RenderString(szKeyBoxKey[x+y*3],5 + l, b - 4, 25,LEFT, SMALL, WHITE); - RenderString(szKeyBoxInfo[x+y*3],20 + l, b - 4, 60, RIGHT, SMALL, ORANGE); - } - } - } - - // output to framebuffer - memcpy(lfb, lbb, fix_screeninfo.line_length*var_screeninfo.yres ); - return pIEdit; -} - -/****************************************************************************** - * CheckEvent - ******************************************************************************/ -/*! - * check the entry - - \param pEvt : EVT_DB* pointer to event-object - \return : 1:OK/Yes 0:Exit/No - changes made -*/ -int CheckEvent(EVT_DB* pEvt) -{ - EVT_DB evtsic; - memcpy(&evtsic,pEvt,sizeof(EVT_DB)-MAXINFOLEN); - - int iLeapYear=0; - if (pEvt->month<1) pEvt->month=1; - if (pEvt->month>12) pEvt->month=12; - if (pEvt->year!=0) - { - if (pEvt->year<1700) pEvt->year=1700; - if (pEvt->year>2299) pEvt->year=2299; - iLeapYear=LeapYear(pEvt->year); - } - if (pEvt->day<1) pEvt->day=1; - if (pEvt->day>monthdays[iLeapYear][pEvt->month-1]) pEvt->day=monthdays[iLeapYear][pEvt->month-1]; - if (pEvt->hour>=0) - { - if (pEvt->hour>23) pEvt->hour=23; - if (pEvt->min<0) pEvt->min=0; - if (pEvt->min>59) pEvt->min=59; - } - - if (pEvt->type==PERIOD) - { - iLeapYear=0; - if (pEvt->emonth<1) pEvt->emonth=1; - if (pEvt->emonth>12) pEvt->emonth=12; - if (pEvt->eyear!=0) - { - if (pEvt->eyear<1700) pEvt->eyear=1700; - if (pEvt->eyear>2299) pEvt->eyear=2299; - iLeapYear=LeapYear(pEvt->eyear); - } - if (pEvt->eday<1) pEvt->eday=1; - if (pEvt->eday>monthdays[iLeapYear][pEvt->emonth-1]) pEvt->eday=monthdays[iLeapYear][pEvt->emonth-1]; - if (pEvt->ehour>=0) - { - if (pEvt->ehour>23) pEvt->ehour=23; - if (pEvt->emin<0) pEvt->emin=0; - if (pEvt->emin>59) pEvt->emin=59; - } - } - - if (memcmp(&evtsic,pEvt,sizeof(EVT_DB)-MAXINFOLEN)) return 0; - return 1; -} - -/****************************************************************************** - * Edit - ******************************************************************************/ -/*! - * edit an entry - - \param pEvt : EVT_DB* pointer to event-object - \return : 1:OK/Yes 0:Exit/No -*/ -int Edit(EVT_DB* pEvt) -{ - int iEditLine=1; - int iEditCol=0; - int tmprc=0xFFFF; - int iTypeInt=2; - int iMultipl=1; - int iFmtIdx=0; - int* pEditInt=NULL; - int iGotoRight=0; - int iKeyboardMode=0; - char info[80]; - int iShortTimer=0; - - // render the output for the current event, return the pointer to the selected - // integer-value, NULL if none selected - pEditInt=PaintEdit(pEvt, iEditLine, iEditCol); - - // act on key-input - while (1) - { - GetRCCode(); - tmprc=rccode; - rccode = 0xFFFF; - if (iShortTimer>1) iShortTimer--; // timer for going one pos to the right - if ((tmprc == 0xFFFF) && (iShortTimer!=1)) continue; // only do something if a key was pressed - - // first calculate how many characters we have in the selected field - // also calculate the multiplier needed for changing an integer value - if ((iEditLine==3) || (iEditLine==8)) // field 3 and 8 are for the years - { - iTypeInt=4; // 4 char value - iFmtIdx=1; - if (iEditCol==0) iMultipl=1000; - if (iEditCol==1) iMultipl=100; - if (iEditCol==2) iMultipl=10; - if (iEditCol==3) iMultipl=1; - } - else if (iEditLine==11) iTypeInt=strlen(pEvt->info); // filed 11 represents the info-string - else // all others are 2-character integer values - { - iTypeInt=2; // 2 char value - iFmtIdx=0; - if (iEditCol==0) iMultipl=10; - if (iEditCol==1) iMultipl=1; - } - - iGotoRight=0; // the procedure go stepping one position to the right - // is outside the next switch, so we use a flag to trigger it - - // no act on the pressed key - switch (tmprc) - { - case RC_CAPSLOCK: // toogle the mode for using the keyboard - case RC_ON: - if (iKeyboardMode) iKeyboardMode=0; - else iKeyboardMode=1; - break; - - // cursor-up, moves the selected line up - case RC_UP: - if ((iEditLine==11) && (pEvt->type==PERIOD)) iEditLine=6; // if we have an end-date, select this line - else iEditLine=1; // else select first field - iEditCol=0; - break; - - // cursor-down, moves the selected line up - case RC_DOWN: - if ((iEditLine==1) && (pEvt->type==PERIOD)) iEditLine=6; // if we have an end-date, select this line - else iEditLine=11; // else select last field - iEditCol=0; - break; - - // cursor right, selects the next character or the next field - case RC_RIGHT: - iGotoRight=1; - break; - - // cursor left, selects previous character or the previous field - case RC_LEFT: - if (--iEditCol<0) // we steped outside the field - { - iEditLine--; // go one-field back - if (iEditLine==10) iEditLine=11; // but stay in the info-field - if ((iEditLine==8) && (pEvt->eyear==0)) iEditLine=7; // if we have no end-year - if (iEditLine==5) iEditLine=6; // don't leave the end-date line - if ((iEditLine==3) && (pEvt->year==0)) iEditLine=2; // if we have no start-year - if (iEditLine<1) iEditLine=1; // don't leave outside or index - iEditCol=0; // start at first column in the new field - } - break; - - // plus, increment the currently selected field - case RC_PLUS: - if (pEditInt!=NULL) // do we have an integer selected - { - *pEditInt+=iMultipl; - if ((iTypeInt==4) && (*pEditInt>=10000)) *pEditInt-=10000;// check for maximum - if ((iTypeInt==2) && (*pEditInt>=100)) *pEditInt-=100; // check for maximum - } - else - { - if (++pEvt->info[iEditCol]>126) pEvt->info[iEditCol]=32; // cycle through 32-126 - } - break; - - // minus, decrement the currently selected field - case RC_MINUS: - if (pEditInt!=NULL) // do we have an integer selected - { - *pEditInt-=iMultipl; - if (*pEditInt<0) *pEditInt+=(iMultipl*10); // check for minimum - } - else - { - if (--pEvt->info[iEditCol]<32) pEvt->info[iEditCol]=126; // cycle through 32-126 - } - break; - - // toogle through different types, select and deselect the needed fields - // cycle: BRITHDAY -> EVENT -> PERIOD -> HOLIDAY -> BIRTHDAY - case RC_RED: - { - iEditCol=0; // in any case select the first char - if (pEvt->type==BIRTHDAY) pEvt->type=EVENT; // change to EVENT, we have all fieds we need - else if (pEvt->type==EVENT) // change to period, we have to enable the end-date/time - { - pEvt->type=PERIOD; - pEvt->eyear=pEvt->year; - pEvt->emonth=pEvt->month; - pEvt->eday=pEvt->day; - pEvt->ehour=pEvt->hour; - pEvt->emin=pEvt->min; - } - else if (pEvt->type==PERIOD) // change to HOLIDAY, we have no end-date/time and no starttime - { - pEvt->type=HOLIDAY; - if (pEvt->year==0) pEvt->year=tShow_year; - pEvt->eyear=0; - pEvt->hour=-1; - pEvt->ehour=-1; - } - else if (pEvt->type==HOLIDAY) // change to BIRTHDAY, birthdays should have a year - { - pEvt->type=BIRTHDAY; - if (pEvt->year==0) pEvt->year=tShow_year; - } - } break; - - // toogle using the year for the events - // thus we switch on or off the using of the year(s) - case RC_GREEN: - { - iEditCol=0; // in any case select the first char - if (pEvt->year) // if we used the year, unuse it - { - pEvt->year=0; - pEvt->eyear=0; - } - else // if we didn't use the year - { - pEvt->year=tShow_year; // insert current selected year - if (pEvt->type==PERIOD) pEvt->eyear=pEvt->year; // if type is PERIOD fill in end-year - } - } break; - - // toogle using the time for the events - // this we switch on or off the times - case RC_YELLOW: - { - if ((pEvt->type==BIRTHDAY) || (pEvt->type==HOLIDAY)) break; - iEditCol=0; // in any case select the first char - if (pEvt->hour!=-1) // if we used the time, unselect the times - { - pEvt->hour=-1; - pEvt->ehour=-1; - } - else // if we didn't use the times - { - pEvt->hour=at->tm_hour; // fill in actual time - pEvt->min=at->tm_min; - if (pEvt->type==PERIOD) // if we have an end-date, fill in the end-time - { - pEvt->ehour=at->tm_hour; - pEvt->emin=at->tm_min; - } - } - } break; - - // toogle using an end-date - // thus switch between EVENT and PERIOD - case RC_BLUE: - { - iEditCol=0; // in any case select the first char - if (pEvt->type==PERIOD) // if we do use an end-date, switch this off - { - pEvt->eyear=0; - pEvt->ehour=-1; - pEvt->type=EVENT; - } - else // if we wand enable a PERIOD - { - pEvt->type=PERIOD; - pEvt->emonth=pEvt->month; // day and month is always used - pEvt->eday=pEvt->day; - if (pEvt->year) pEvt->eyear=pEvt->year; // if we have a start-year, also use end-year - if (pEvt->hour!=-1) // if we have a start-time, also use end-time - { - pEvt->ehour=pEvt->hour; - pEvt->emin=pEvt->min; - } - } - } break; - - // an number has been entered - case RC_0: case RC_1: case RC_2: case RC_3: case RC_4: - case RC_5: case RC_6: case RC_7: case RC_8: case RC_9: - { - if (pEditInt!=NULL) // do we have an integer selected - { - - sprintf(info,szFmtStr[iFmtIdx],*pEditInt); - info[iEditCol]=tmprc; - *pEditInt=atoi(info); - iGotoRight=1; // goto next position - } - else - { - if ((iKeyboardMode) || (tmprc==RC_0)) // using a keyboard or '0' - { - pEvt->info[iEditCol]=tmprc; // set character - iGotoRight=1; // goto next position - } - else // not using a keyboard - { - char* p; - p=strchr(szKeyBoxInfo[tmprc-RC_1],pEvt->info[iEditCol]);// is the actual character a subset of this key-sequence - if (p==NULL) - { - if (iShortTimer==0) - pEvt->info[iEditCol]=szKeyBoxInfo[tmprc-RC_1][0]; // add the first char - else - { - if (iEditColinfo[iEditCol+1]==0) pEvt->info[iEditCol+2]=0; - iEditCol++; - } - pEvt->info[iEditCol]=szKeyBoxInfo[tmprc-RC_1][0]; // add the first char - } - } - else - { - if (*(p+1)==0) pEvt->info[iEditCol]=szKeyBoxInfo[tmprc-RC_1][0]; - else pEvt->info[iEditCol]=*(p+1); - } - iShortTimer=REPKEYDELAY; - } - } - } - break; - - // delete previous character - case RC_BS: - if ((pEditInt==NULL) && (iEditCol)) // do we have the info selected and at least 2 chars - { - iEditCol--; // step one position left an fallthrough to RC_MUTE - } - else break; - - // delete actual character - case RC_ENTF: - case RC_MUTE: - if (pEditInt==NULL) // do we have the info selected - { - if (pEvt->info[iEditCol+1]!=0) // only delete if there is something to delete - { - strcpy(info,&pEvt->info[iEditCol+1]); - strcpy(&pEvt->info[iEditCol],info); - } - } - break; - - // finish the edit-dialog - // TODO: security-question - case RC_OK: - if (CheckEvent(pEvt)) - { - if (MessageBox(infomsg1[0][osdidx],infomsg1[3][osdidx])) // save changes? - return 1; // return YES - } - break; - case RC_HOME: - if (MessageBox(infomsg1[0][osdidx],infomsg1[4][osdidx])) // lose changes? - return 0; // return NO - break; - - default: - if (pEditInt==NULL) // do we have the info selected - { - if ((tmprc>=' ') && (tmprc<=255)) // printable? - { - iKeyboardMode=1; - pEvt->info[iEditCol]=tmprc; // set character - iGotoRight=1; // goto next position - } - } - } - - if ((iShortTimer) && ((tmprcRC_9)) && (tmprc != 0xFFFF)) - { - iShortTimer=0; - } - if (iShortTimer==1) - { - iShortTimer=0; - iGotoRight=1; - } - - if (iGotoRight) // we step one position to the right - { - if (++iEditCol==iTypeInt) // when we steped past the last char of a field - { - iEditLine++; // goto the next field, but - if ((iEditLine==3) && (pEvt->year==0)) iEditLine=4; // if no start-year, goto the next field - if ((iEditLine==4) && (pEvt->hour==-1)) iEditLine=1; // if no start-time, goto the first field - if (iEditLine==6) iEditLine=1; // if we have been at the last field in this line, goto the first - if ((iEditLine==8) && (pEvt->eyear==0)) iEditLine=9; // if no end-year, goto the next field - if ((iEditLine==9) && (pEvt->ehour==-1)) iEditLine=6; // if no end-time, goto the first field in this line - if (iEditLine==12) // if last char of info-line - { - if (iTypeInt<(MAXINFOEDITLEN-1)) // we can still add a char to the info - { - pEvt->info[iEditCol]=' '; // add the space - pEvt->info[iEditCol+1]=0; // end the string - } - else iEditCol=0; // else, we step to the first char - iEditLine=11; // and of course we stay at the info-line - } - else iEditCol=0; // first char of any field (except info-field) - } - } - - // render the output for the current event, return the pointer to the selected - // integer-value, NULL if none selected - pEditInt=PaintEdit(pEvt, iEditLine, iEditCol); - } - return 0; -} - -/****************************************************************************** - * PaintGrid - ******************************************************************************/ -/*! - * paint the calendar-grid - - -*/ -void PaintGrid(int last, int start, int end, int akt, int sel, int infolines, int* iSelInfo) -{ - int x,y; - int iCnt=0; - int cy; - int iDate; - char info[80]; - int cols=4; - int iEvt; - int iTmpMonth, iTmpYear; - int l,t,r,b; - - // how many calendar-lines do we need - if (end>5*7) cols=6; - else if (end>4*7) cols=5; - - // height of calendar-grid depends on showing infolines and calendar-lines - if (infolines) cy=GRIDBOX_CY2/cols; - else cy=GRIDBOX_CY1/cols; - - // background (just for testing) - // RenderBox(0, 0, MAXSCREEN_X, MAXSCREEN_Y, FILL, WHITE); - // sprintf(info,"%d %d %d %d %d %d",last,start,end,akt,sel,infolines); - // RenderString(info,0,GRIDLINE-2,MAXSCREEN_X-4, LEFT, SMALL, GREY); - // return; - - // header (paint date and time) - RenderBox(0, 0, MAXSCREEN_X,GRIDLINE, FILL, SKIN3); - RenderBox(0, 0, MAXSCREEN_X,GRIDLINE, GRID, SKIN2); - RenderBox(MAXSCREEN_X/2, 0, MAXSCREEN_X/2,GRIDLINE, GRID, SKIN2); - strftime(info,80,infomsg[DATE][osdidx],at); - RenderString(info,0,GRIDLINE-4,MAXSCREEN_X-4, FIXEDRIGHT, SMALL, GREY); - sprintf(info,"%s %u",monthmsg[tShow_mon-1][osdidx],tShow_year); - RenderString(info,0+4, GRIDLINE-4,MAXSCREEN_X/2, CENTER, NORMAL, BLACK); - - // only paint if a key has been pressed -// if (rccode!=0xFFFF) return; - - // paint monday to sunday - for (x=0; x<7; x++) - { - RenderBox(0+x*GRIDBOX_X, GRIDLINE, (x+1)*GRIDBOX_X,GRIDCAL, FILL, SKIN0); - RenderBox(0+x*GRIDBOX_X, GRIDLINE, (x+1)*GRIDBOX_X,GRIDCAL, GRID, SKIN2); - RenderString(days[x][osdidx], x*GRIDBOX_X, GRIDCAL-2, GRIDBOX_X, CENTER, SMALL, WHITE); - } - - // paint calendar squares - for (y=0; yend)) RenderBox(l, t, r, b, FILL, DAY3); // day outside month - else if (x>4) RenderBox(l, t, r, b, FILL, DAY4); // saturday or sunday - else RenderBox(l, t, r, b, FILL, DAY5); // all other days - - // draw border around the day - if (iCnt==sel) RenderBox(l, t, r, b, GRID, SKIN1); - else RenderBox(l, t, r, b, GRID, SKIN2); - - // calculate the day/month/year for the selected field - iTmpMonth=tShow_mon; - iTmpYear=tShow_year; - if (iCntend) - { - iDate=iCnt-end; - iTmpMonth++; - if (iTmpMonth==13) - { - iTmpMonth=1; - iTmpYear++; - } - } - else - { - iDate=iCnt-start+1; - } - - // get all event for this day - iEvt=IsEvent(iDate,iTmpMonth,iTmpYear); - - // paint date in the left-top corner of the box - sprintf(info,"%u",iDate); - RenderString(info,0+x*GRIDBOX_X+4, GRIDCAL+y*cy+FONTSIZE_SMALL, GRIDBOX_X, LEFT, SMALL, BLACK); - - // if we have found some events, we will paint markers and/or lines - if (iEvt) - { - int i; - for (i=0; iMAXENTRYS) // special variable/fixed holidays - { - RenderSObject(0+x*GRIDBOX_X+25,GRIDCAL+y*cy+5,MAGENTA,OBJ_MARKER); - RenderBox(0+x*GRIDBOX_X+2, GRIDCAL+(y+1)*cy-10, (x+1)*GRIDBOX_X-2,GRIDCAL+(y+1)*cy-6, FILL, BLUE); - } - else - { - switch (eventdb[iEventType[i]].type) - { - case BIRTHDAY: RenderSObject(0+x*GRIDBOX_X+45,GRIDCAL+y*cy+5,RED,OBJ_HEART); break; - case EVENT: RenderSObject(0+x*GRIDBOX_X+63,GRIDCAL+y*cy+5,BLUE,OBJ_CLOCK); break; - case PERIOD: RenderBox(0+x*GRIDBOX_X+2, GRIDCAL+(y+1)*cy-20, (x+1)*GRIDBOX_X-2,GRIDCAL+(y+1)*cy-16, FILL, RED); break; - case HOLIDAY: RenderBox(0+x*GRIDBOX_X+2, GRIDCAL+(y+1)*cy-10, (x+1)*GRIDBOX_X-2,GRIDCAL+(y+1)*cy-6, FILL, BLUE); break; - } - } - } - } - } - } - - // paint thick lines to seperate month - if (start>1) - { - RenderBox(0, GRIDCAL+cy-LNWIDTH, (start-1)*GRIDBOX_X+LNWIDTH,GRIDCAL+cy+LNWIDTH, FILL, BLACK); - RenderBox((start-1)*GRIDBOX_X-LNWIDTH, GRIDCAL, (start-1)*GRIDBOX_X+LNWIDTH,GRIDCAL+cy, FILL, BLACK); - } - if (end < cols*7) - { - x=cols*7-end; - RenderBox(MAXSCREEN_X-x*GRIDBOX_X, GRIDCAL+(cols-1)*cy-LNWIDTH, MAXSCREEN_X,GRIDCAL+(cols-1)*cy+LNWIDTH, FILL, BLACK); - RenderBox(MAXSCREEN_X-x*GRIDBOX_X-LNWIDTH, GRIDCAL+(cols-1)*cy, MAXSCREEN_X-x*GRIDBOX_X+LNWIDTH,GRIDCAL+cols*cy, FILL, BLACK); - } - - // do we want to see some (max. 3) event on the screen - if (infolines) - { - // paint selected date and info-lines - RenderBox(0, GRIDCAL+GRIDBOX_CY2, MAXSCREEN_X,GRIDCAL+GRIDBOX_CY2+GRIDLINE_INFO, FILL, SKIN3); - RenderBox(0, GRIDCAL+GRIDBOX_CY2, MAXSCREEN_X,GRIDCAL+GRIDBOX_CY2+GRIDLINE_INFO, GRID, SKIN2); - - iEvt=IsEvent(tShow_day,tShow_mon,tShow_year); - // set maximum for selected entry - if (iEvt<*iSelInfo) *iSelInfo=iEvt; - - int iW; - iW=WeekNumber(tShow_year, tShow_mon, tShow_day); - - if (osdidx == 0) - sprintf(info,"W %d %u. %s %u %u %s",iW,tShow_day,monthmsg[tShow_mon-1][osdidx],tShow_year,iEvt,infotype[1][osdidx]); - else - sprintf(info,"W %d %s %u, %u %u %s",iW,monthmsg[tShow_mon-1][osdidx],tShow_day,tShow_year,iEvt,infotype[1][osdidx]); - RenderString(info,0+4, GRIDCAL+GRIDBOX_CY2+GRIDLINE_INFO-4,MAXSCREEN_X, CENTER, NORMAL, BLACK); - - int iMarkline=*iSelInfo; - if (*iSelInfo>3) iMarkline=3; - PEVT_DB pEvt=NULL; - for (y=1;y<=3;y++) - { - int iSelEvt=y-1; // iSelEvent is the index for the event we print - if (*iSelInfo>3) iSelEvt+=(*iSelInfo-3); - - int iType; - RenderBox(0, GRIDCAL+GRIDBOX_CY2+y*GRIDLINE_INFO, MAXSCREEN_X,GRIDCAL+GRIDBOX_CY2+(y+1)*GRIDLINE_INFO, FILL, (y==iMarkline) ? LGREY : WHITE); - RenderBox(0, GRIDCAL+GRIDBOX_CY2+y*GRIDLINE_INFO, MAXSCREEN_X,GRIDCAL+GRIDBOX_CY2+(y+1)*GRIDLINE_INFO, GRID, SKIN2); - - // variable/fixed holidays - if ((iEvt>=y) && (iEventType[iSelEvt]>MAXENTRYS)) - { - RenderSObject(0,GRIDCAL+GRIDBOX_CY2+(y)*GRIDLINE_INFO+8,MAGENTA,OBJ_MARKER); - RenderString(vdaysnames[iEventType[iSelEvt]-MAXENTRYS-1][osdidx],20,GRIDCAL+GRIDBOX_CY2+(y+1)*GRIDLINE_INFO-4,MAXSCREEN_X-4,LEFT,SMALL,BLACK); - } - // do we have an event in this line? - else if ((iEvt>=y) && (iType=eventdb[iEventType[iSelEvt]].type)) - { - pEvt=&eventdb[iEventType[iSelEvt]]; - - // write info for birthday - if (iType == BIRTHDAY) - { - sprintf(info,"%s: %s (%u)",infotype[0][osdidx],pEvt->info,tShow_year-pEvt->year); - RenderSObject(2,GRIDCAL+GRIDBOX_CY2+(y)*GRIDLINE_INFO+8,RED,OBJ_HEART); - RenderString(info,20,GRIDCAL+GRIDBOX_CY2+(y+1)*GRIDLINE_INFO-4,MAXSCREEN_X-4,LEFT,SMALL,BLACK); - } - // write info for an event - else if (iType == EVENT) - { - if (pEvt->hour!=-1) - sprintf(info,"%02u:%02u %s",pEvt->hour,pEvt->min,pEvt->info); - else - sprintf(info,"%s",pEvt->info); - RenderSObject(2,GRIDCAL+GRIDBOX_CY2+(y)*GRIDLINE_INFO+8,BLUE,OBJ_CLOCK); - RenderString(info,20,GRIDCAL+GRIDBOX_CY2+(y+1)*GRIDLINE_INFO-4,MAXSCREEN_X-4,LEFT,SMALL,BLACK); - } - // write info for a holiday - else if (iType == HOLIDAY) - { - sprintf(info,"%s: %s",infotype[3][osdidx],pEvt->info); - RenderString(info,5,GRIDCAL+GRIDBOX_CY2+(y+1)*GRIDLINE_INFO-4,MAXSCREEN_X-4,LEFT,SMALL,BLACK); - } - // write info for a timeperiod - else if (iType == PERIOD) - { - if ((pEvt->year!=0) && (pEvt->hour!=-1)) - { - char info1[8]; - char info2[8]; - if ((pEvt->year==tShow_year) && (pEvt->month==tShow_mon) && (pEvt->day==tShow_day)) - sprintf(info1,"%02u:%02u >",pEvt->hour,pEvt->min); - else info1[0]=0; - if ((pEvt->eyear==tShow_year) && (pEvt->emonth==tShow_mon) && (pEvt->eday==tShow_day)) - sprintf(info2,"> %02u:%02u",pEvt->ehour,pEvt->emin); - else info2[0]=0; - - sprintf(info,"%s: %s %s%s",infotype[2][osdidx],pEvt->info,info1,info2); - } - else - sprintf(info,"%s: %s",infotype[2][osdidx],pEvt->info); - RenderString(info,5,GRIDCAL+GRIDBOX_CY2+(y+1)*GRIDLINE_INFO-4,MAXSCREEN_X-4,LEFT,SMALL,BLACK); - } - } - } - - // if we have more than 3 event, we paint arrow(s) to signal this - if (iEvt>3) - { - if (*iSelInfo!=iEvt) - RenderSObject(MAXSCREEN_X-18,GRIDCAL+GRIDBOX_CY2+3*GRIDLINE_INFO+10,SKIN1,OBJ_SCROLLDN); - if (*iSelInfo>3) - RenderSObject(MAXSCREEN_X-18,GRIDCAL+GRIDBOX_CY2+1*GRIDLINE_INFO+10,SKIN1,OBJ_SCROLLUP); - } - - } - - // footer - RenderBox(0, MAXSCREEN_Y-GRIDLINE_SMALL, MAXSCREEN_X,MAXSCREEN_Y, FILL, SKIN3); - RenderBox(0, MAXSCREEN_Y-GRIDLINE_SMALL, MAXSCREEN_X,MAXSCREEN_Y, GRID, SKIN2); - - if (infolines) - { - RenderSObject(4,MAXSCREEN_Y-GRIDLINE_SMALL+4,RED,OBJ_CIRCLE); - RenderString(infohelp[0][osdidx],25,MAXSCREEN_Y-4,MAXSCREEN_X/4,LEFT,SMALL,BLACK); - RenderSObject(4+MAXSCREEN_X/4,MAXSCREEN_Y-GRIDLINE_SMALL+4,GREEN,OBJ_CIRCLE); - RenderString(infohelp[1][osdidx],25+MAXSCREEN_X/4,MAXSCREEN_Y-4,MAXSCREEN_X/4,LEFT,SMALL,BLACK); - RenderSObject(4+MAXSCREEN_X/2,MAXSCREEN_Y-GRIDLINE_SMALL+4,YELLOW,OBJ_CIRCLE); - RenderString(infohelp[2][osdidx],25+MAXSCREEN_X/2,MAXSCREEN_Y-4,MAXSCREEN_X/4,LEFT,SMALL,BLACK); - RenderSObject(4+3*MAXSCREEN_X/4,MAXSCREEN_Y-GRIDLINE_SMALL+4,BLUE,OBJ_CIRCLE); - RenderString(infohelp[3][osdidx],25+3*MAXSCREEN_X/4,MAXSCREEN_Y-4,MAXSCREEN_X/4,LEFT,SMALL,BLACK); - } - else - { - RenderString(infohelp[4][osdidx],4,MAXSCREEN_Y-4,MAXSCREEN_X-8,LEFT,SMALL,BLACK); - } - - // output to framebuffer - memcpy(lfb, lbb, fix_screeninfo.line_length*var_screeninfo.yres ); -} - -/****************************************************************************** - * LeapYear - ******************************************************************************/ -/*! - * calculate if we have a leap-year - -\return 1 if leap-year -*/ -int LeapYear(int year) -{ - if (((year % 4 == 0) && (!( year % 100 == 0))) && (year % 400 != 0)) - { - return 1; - } - return 0; -} - -/* -The basic steps for a date in the years 2000-2099 are as follows: - -Example date July 13th, 2004 - - 1. Take the last 2 digits of the year and add a quarter onto itself. (04 + 1 = 5) - 2. Get the corresponding code for the month. (January = 6, February = 2, March = 2, etc. See month codes for details). July = 5 - 3. Take the day. (=13) - 4. Add the numbers together (5 + 5 + 13 = 23) - 5. Take away 7 (or multiples of 7) until a number from 1-7 is left. (23 - 21 =2) - 6. This number corresponds to the day of the week. (1 = Monday, 2 = Tuesday, etc.) In this case 2 = Tuesday - -Apart from the basic steps, other elements have to be taken into account: - - * When adding a quarter of the year onto itself, If the quarter of the year is not a whole number, simply ignore the decimals. Do not round up. Therefore 27/4 = 6.75 = 6, and 2/4 = 0.5 = 0. - - * Leap years: subtract 1 from the total if the month is January or February. - - * Negative numbers. During the calculation you get 0 or negative numbers, just add seven until you get a number from 1-7. - - * Different "centuries" *. - o 1700s add 5 - o 1800s add 3 - o 1900s add 1 - o 2100s subtract 2 - o 2200s subtract 4 - - -Jan Feb Mar Apr. May Jun Jul Ago Sept Oct Nov Dec -6 2 2 5 0 3 5 1 4 6 2 4 -*/ -/****************************************************************************** - * DayOfWeek - ******************************************************************************/ -/*! - * return the day-of-the-week - * monday=1, tueday=2, etc. - -*/ -int DayOfWeek(int day, int month, int year) -{ - int iCalc; - - // no calculations out of range, return monday :) - if ((year<1700) || (year>=2300)) return 1; - - // Take the last 2 digits of the year and add a quarter onto itself. (04 + 1 = 5) - iCalc=(year % 100) + (year % 100)/4; - - // Get the corresponding code for the month. (January = 6, February = 2, March = 2, etc. See month codes for details). July = 5 - // Take the day. (=13) - // Add the numbers together (5 + 5 + 13 = 23) - iCalc+=monthcode[month-1]+day; - - // Leap years: subtract 1 from the total if the month is January or February. - if ((LeapYear(year)) && (month<3)) iCalc--; - - // Different "centuries" *. - // o 1700s add 5 - // o 1800s add 3 - // o 1900s add 1 - // o 2100s subtract 2 - // o 2200s subtract 4 - if (year<1800) iCalc+=5; - else if (year<1900) iCalc+=3; - else if (year<2000) iCalc+=1; - else if (year>=2200) iCalc-=4; - else if (year>=2100) iCalc-=2; - - // Negative numbers. During the calculation you get 0 or negative numbers, just add seven until you get a number from 1-7. - while (iCalc<1) iCalc+=7; - - // Take away 7 (or multiples of 7) until a number from 1-7 is left. (23 - 21 =2) - while (iCalc>7) iCalc-=7; - - return iCalc; -} - -/****************************************************************************** - * AddDays - ******************************************************************************/ -/*! - * add days (max. +/- 28) to date - -*/ -void AddDays(int* pday, int* pmonth, int* pyear, int adddays) -{ - if ((adddays>28) || (adddays<-28)) return; - - int day = *pday; - int month = *pmonth; - int year = *pyear; - int iLeapYear; - - iLeapYear=LeapYear(year); - - // substract days - if (adddays<0) - { - day+=adddays; - if (day<1) - { - month--; - if (month<1) - { - month=12; - year--; - } - day+=monthdays[iLeapYear][month-1]; - } - } - - // add days - if (adddays>0) - { - day+=adddays; - if (day > monthdays[iLeapYear][month-1]) - { - day-=monthdays[iLeapYear][month-1]; - month++; - if (month>12) - { - month=1; - year++; - } - } - } - - *pday=day; - *pmonth=month; - *pyear=year; -} - -/****************************************************************************** - * WeekNumber - ******************************************************************************/ -/*! - * calculate the ISO Weeknumber - * code from http://www.proesite.com/timex/wkcalc.htm - -*/ -int WeekNumber( int y, int m, int d ) -{ - int days; - int dow0401; - int offset; - int week; - - dow0401 = DayOfWeek( 4, 1, y ); // weekday for 4th january, this day is in the first week - - days = __mon_yday[LeapYear(y)?1:0][m-1] + d; // days in this year - - offset = dow0401 - 4; // offset for 1.1 for monday of week 1 - days = days + offset -1; - if (days<0) - { - int iWD=DayOfWeek( 1, 1, y-1); - if ((iWD==4) || ((LeapYear(y-1)) && (iWD==3))) week = 53; - else week = 52; - } - else week = (days / 7) +1; - - if ((days > 360) && (week > 52)) - { - int iWD=DayOfWeek( 1, 1, y); - if ((iWD==4) || ((LeapYear(y)) && (iWD==3))) week = 53; - else week = 1; - } - - return week; - -/* - dow = DayOfWeek( d, m, y ) -1 ; - dow0101 = DayOfWeek( 1, 1, y ) -1 ; - - if ( m == 1 && 3 < dow0101 < 7 - (d-1) ) - { - // days before week 1 of the current year have the same week number as - // the last day of the last week of the previous year - - dow = dow0101 - 1; - dow0101 = DayOfWeek( 1, 1, y-1 ) -1 ; - m = 12; - d = 31; - } - else if ( m == 12 && 30 - (d-1) < (DayOfWeek( 1, 1, y+1 ) -1) < 4 ) - { - // days after the last week of the current year have the same week number as - // the first day of the next year, (i.e. 1) - - return 1; - } - - return ( (DayOfWeek( 1, 1, y ) -1) < 4 ) + 4 * (m-1) + ( 2 * (m-1) + (d-1) + dow0101 - dow + 6 ) * 36 / 256; - - - - int Woche=0; - int Wochtag1Jan=CurrentDoomDay(jahr); - int Tage=tagesnummer(tag, monat, jahr)-1; - - - if (Wochtag1Jan > 3) - Tage = Tage - (7 - Wochtag1Jan); - else Tage = Tage + Wochtag1Jan; - - if (Tage < 0) - if ( (Wochtag1Jan == 4) || (CurrentDoomDay(jahr-1) == 3)) - Woche = 53; - else Woche = 52; - else Woche = (Tage/7) + 1; - - if ((Tage > 360) && (Woche > 52)) { - if (Wochtag1Jan == 3) - Woche = 53; - else if (CurrentDoomDay(jahr+1) == 4) - Woche = 53; - else Woche = 1; - } - - return Woche; -*/ -} - -/****************************************************************************** - * CalcEastern - ******************************************************************************/ -/*! - * - - Christi Himmelfahrt (+39), - - Pfingsten (+49), - - Fronleichnam (+60), - -Der Muttertag ist der zweite Sonntag im Mai, -das Erntedankfest der erste Sonntag im Oktober (jedoch nicht überall!). -Der 1. Advent ist der Sonntag nach dem 26. November; -der Buß- und Bettag liegt 11 Tage vor dem 1. Advent. - - -*/ -void CalcEastern(int year, int* month, int* day) -{ - int a,b,c,d,e; - int dM, dA; - int M = 24, N=5; - - if (year<1800) { M=23; N=3; } - else if (year<1900) { M=23; N=4; } - else if (year<2100) { M=24; N=5; } - else if (year<2200) { M=24; N=6; } - - a= year % 19; - b= year % 4; - c= year % 7; - d= (19*a + M) % 30; - e= (2*b + 4*c + 6*d + N) % 7; - - dM = (22 + d + e); // eastern in march dM >= 22 - dA = (d + e - 9); // eastern in april dA <= 25 - - *month=3; - *day=dM; // we think eastern is in march - - if (dM > 31) - { - if (dA == 26) // special rule - { *month=4; *day=19; } - else if ((dA == 25) && (d == 28) && (a > 10)) // another special rule - { *month=4; *day=18; } - else - { *month=4; *day=dA; } - } -} - -/****************************************************************************** - * FillEasternDays - ******************************************************************************/ -/*! - * fill the structure for this years for eastern etc. - - Christi Himmelfahrt (+39), - - Pfingsten (+49), - - Fronleichnam (+60), - -Der Muttertag ist der zweite Sonntag im Mai, -das Erntedankfest der erste Sonntag im Oktober (jedoch nicht überall!). -Der 1. Advent ist der Sonntag nach dem 26. November; -der Buß- und Bettag liegt 11 Tage vor dem 1. Advent. - - -*/ -void FillEasternDays(int year) -{ - int mon, day; - int mon1, day1; - - CalcEastern(year, &mon, &day); - mon1=mon; day1=day; - varaibledays[OFFSET_E-1].mon = mon; // eastern - varaibledays[OFFSET_E-1].day = day; - AddDays(&day, &mon, &year, 1); - varaibledays[OFFSET_EM-1].mon = mon; // eastern monday - varaibledays[OFFSET_EM-1].day = day; - - AddDays(&day, &mon, &year, 19); // +39 days from eastern - AddDays(&day, &mon, &year, 19); - varaibledays[OFFSET_H-1].mon = mon; // christi himmelfahrt - varaibledays[OFFSET_H-1].day = day; - - AddDays(&day, &mon, &year, 10); - varaibledays[OFFSET_P-1].mon = mon; // pfingsten - varaibledays[OFFSET_P-1].day = day; - AddDays(&day, &mon, &year, 1); - varaibledays[OFFSET_PM-1].mon = mon; // pfingsten montag - varaibledays[OFFSET_PM-1].day = day; - - AddDays(&day, &mon, &year, 10); - varaibledays[OFFSET_F-1].mon = mon; // fronleichnam - varaibledays[OFFSET_F-1].day = day; - - AddDays(&day1, &mon1, &year, -2); - varaibledays[OFFSET_KF-1].mon = mon1; // karfreitag - varaibledays[OFFSET_KF-1].day = day1; - AddDays(&day1, &mon1, &year, -1); - varaibledays[OFFSET_GD-1].mon = mon1; // gruendonnerstag - varaibledays[OFFSET_GD-1].day = day1; - - AddDays(&day1, &mon1, &year, -23); - AddDays(&day1, &mon1, &year, -20); - varaibledays[OFFSET_A-1].mon = mon1; // aschermittwoch - varaibledays[OFFSET_A-1].day = day1; - AddDays(&day1, &mon1, &year, -2); - varaibledays[OFFSET_RM-1].mon = mon1; // rosenmontag - varaibledays[OFFSET_RM-1].day = day1; - - //mothersday is 2. sunday in may - int iWDay; - iWDay=DayOfWeek(1,5,year); - varaibledays[OFFSET_M-1].mon = 5; - varaibledays[OFFSET_M-1].day = 15-iWDay; - - // sommertime - iWDay=DayOfWeek(31,3,year); - if (iWDay!=7) varaibledays[OFFSET_SZ-1].day = 31-iWDay; - else varaibledays[OFFSET_SZ-1].day = 31; - varaibledays[OFFSET_SZ-1].mon = 3; - - // wintertime - iWDay=DayOfWeek(31,10,year); - if (iWDay!=7) varaibledays[OFFSET_WZ-1].day = 31-iWDay; - else varaibledays[OFFSET_WZ-1].day = 31; - varaibledays[OFFSET_WZ-1].mon = 10; - - varaibledays[OFFSET_W0-1].day=24; // heiliger abend - varaibledays[OFFSET_W0-1].mon=12; - varaibledays[OFFSET_W1-1].day=25; // 1. weihnachtstag - varaibledays[OFFSET_W1-1].mon=12; - varaibledays[OFFSET_W2-1].day=26; // 2. weihnachtstag - varaibledays[OFFSET_W2-1].mon=12; - varaibledays[OFFSET_3K-1].day=6; // hl. 3 koenige - varaibledays[OFFSET_3K-1].mon=1; - varaibledays[OFFSET_N-1].day=1; // neujahr - varaibledays[OFFSET_N-1].mon=1; - varaibledays[OFFSET_S-1].day=31; // sylvester - varaibledays[OFFSET_S-1].mon=12; - varaibledays[OFFSET_V-1].day=14; // valentinstag - varaibledays[OFFSET_V-1].mon=2; - varaibledays[OFFSET_1M-1].day=1; // 1. may - varaibledays[OFFSET_1M-1].mon=5; - varaibledays[OFFSET_MH-1].day=15; // maria himmelfahrt - varaibledays[OFFSET_MH-1].mon=8; - varaibledays[OFFSET_NI-1].day=6; // nikolaus - varaibledays[OFFSET_NI-1].mon=12; - varaibledays[OFFSET_ND-1].day=3; // tag der deutschen einheit - varaibledays[OFFSET_ND-1].mon=10; - varaibledays[OFFSET_NA-1].day=26; // nationalfeiertag oesterreich - varaibledays[OFFSET_NA-1].mon=10; -} - -/****************************************************************************** - * IsEvent - ******************************************************************************/ -/*! - * is there an event at this day - -*/ -int IsEvent(int day, int month, int year) -{ - int iEntry=0; - int iCnt=0; - int iFound; - int days = __mon_yday[LeapYear(year) ? 1 : 0][month-1]+day; - - // first check for any of the holidays: eastern, etc. - int i; - for (i=1;i<=NOF_VDAYS;i++) - if ((varaibledays[i-1].mon==month) && (varaibledays[i-1].day==day)) - iEventType[iCnt++]=MAXENTRYS+i; - - while (iEntry= __mon_yday[0][2]) iTmpDays1++; - if (iTmpDays2 >= __mon_yday[0][2]) iTmpDays2++; - if ((iTmpDays1 <= days) && (iTmpDays2 >= days)) - iFound=1; - } - else - { - if ((eventdb[iEntry].days <= days) && (eventdb[iEntry].edays >= days)) - iFound=1; - } - } - else - { - if (((eventdb[iEntry].year < year) || ((eventdb[iEntry].year == year) && (eventdb[iEntry].days <= days))) && - ((eventdb[iEntry].eyear > year) || ((eventdb[iEntry].eyear == year) && (eventdb[iEntry].edays >= days)))) - iFound=1; - } - } - - if (iFound) - { - iEventType[iCnt]=iEntry; - iCnt++; - } - - iEntry++; - if (iCnt==MAXPERDAY) break; - } - - return iCnt; -} - -/****************************************************************************** - * LoadDatabase - ******************************************************************************/ -/*! - * load the database from file - -*/ -void LoadDatabase(void) -{ - // clear database - memset(eventdb,0,sizeof(eventdb)); - - char linebuffer[1024]; - FILE *fd_evt; - int iEntry=0; - int iLen; - char* p1; - char* p2; - - // read the tuxcal-event-file - if ((fd_evt = fopen(CFGPATH EVTFILE, "r"))!=NULL) - { - // read line by line - while (fgets(linebuffer, sizeof(linebuffer), fd_evt)) - { - p1=linebuffer; - - // first check for type - if ((p2=strchr(p1,';')) == NULL) - { - if ((p2=strchr(p1,'#')) != NULL) // comment ? - { - eventdb[iEntry].type = COMMENT; - strcpy(eventdb[iEntry].info,linebuffer); - } - else - { - eventdb[iEntry].type = SPACE; // empty line - } - iEntry++; - if (iEntry >= MAXENTRYS) break; - continue; - } - - switch (p1[0]) - { - case 'Z': - case 'z': eventdb[iEntry].type = PERIOD; break; - case 'G': - case 'g': eventdb[iEntry].type = BIRTHDAY; break; - case 'T': - case 't': eventdb[iEntry].type = EVENT; break; - case 'F': - case 'f': eventdb[iEntry].type = HOLIDAY; break; - default: eventdb[iEntry].type = COMMENT; - } - - - p1=p2; - *p1=' '; - //second check for date - if ((p2=strchr(p1,';')) == NULL) - continue; - - // we have 6 different formats, we use the length for recognition - // dd.mm.(6) or dd.mm.yyyy(10) or dd.mm.-dd.mm(13) or dd.mm.yyyy-dd.mm.yyyy(21) - // or dd.mm.yyyy hh:mm(16) or dd.mm.yyyy hh:mm-dd.mm.yy hh:mm(33) - *p2=0; - iLen=strlen(p1)-1; // stringlen without leading space - switch (iLen) - { - // dd.mm. all day event/holiday - case 6: - sscanf(p1," %02u.%02u.",&eventdb[iEntry].day,&eventdb[iEntry].month); - eventdb[iEntry].days=__mon_yday[0][eventdb[iEntry].month-1]+eventdb[iEntry].day; - eventdb[iEntry].hour=-1; - eventdb[iEntry].ehour=-1; - break; - - // dd.mm.yyyy all day event - case 10: - sscanf(p1," %02u.%02u.%04u",&eventdb[iEntry].day,&eventdb[iEntry].month,&eventdb[iEntry].year); - eventdb[iEntry].days=__mon_yday[LeapYear(eventdb[iEntry].year) ? 1 : 0][eventdb[iEntry].month-1]+eventdb[iEntry].day; - eventdb[iEntry].hour=-1; - eventdb[iEntry].ehour=-1; - break; - - // dd.mm.-dd.mm. all day event-period - case 13: - sscanf(p1," %02u.%02u.-%02u.%02u.",&eventdb[iEntry].day,&eventdb[iEntry].month,&eventdb[iEntry].eday,&eventdb[iEntry].emonth); - eventdb[iEntry].days=__mon_yday[0][eventdb[iEntry].month-1]+eventdb[iEntry].day; - eventdb[iEntry].edays=__mon_yday[0][eventdb[iEntry].emonth-1]+eventdb[iEntry].eday; - eventdb[iEntry].hour=-1; - eventdb[iEntry].ehour=-1; - break; - - // dd.mm.yyyy hh:mm event at certain time - case 16: - sscanf(p1," %02u.%02u.%04u %02u:%02u",&eventdb[iEntry].day,&eventdb[iEntry].month,&eventdb[iEntry].year,&eventdb[iEntry].hour,&eventdb[iEntry].min); - eventdb[iEntry].days=__mon_yday[LeapYear(eventdb[iEntry].year) ? 1 : 0][eventdb[iEntry].month-1]+eventdb[iEntry].day; - break; - - // dd.mm.yyyy-dd.mm.yyyy all day event period - case 21: - sscanf(p1," %02u.%02u.%04u-%02u.%02u.%04u",&eventdb[iEntry].day,&eventdb[iEntry].month,&eventdb[iEntry].year,&eventdb[iEntry].eday,&eventdb[iEntry].emonth,&eventdb[iEntry].eyear); - eventdb[iEntry].days=__mon_yday[LeapYear(eventdb[iEntry].year) ? 1 : 0][eventdb[iEntry].month-1]+eventdb[iEntry].day; - eventdb[iEntry].edays=__mon_yday[LeapYear(eventdb[iEntry].year) ? 1 : 0][eventdb[iEntry].emonth-1]+eventdb[iEntry].eday; - eventdb[iEntry].hour=-1; - eventdb[iEntry].ehour=-1; - break; - - // dd.mm.yyyy hh:mm-dd.mm.yyyy hh:mm event-period - case 33: - sscanf(p1," %02u.%02u.%04u %02u:%02u-%02u.%02u.%04u %02u:%02u",&eventdb[iEntry].day,&eventdb[iEntry].month,&eventdb[iEntry].year,&eventdb[iEntry].hour,&eventdb[iEntry].min,&eventdb[iEntry].eday,&eventdb[iEntry].emonth,&eventdb[iEntry].eyear,&eventdb[iEntry].ehour,&eventdb[iEntry].emin); - eventdb[iEntry].days=__mon_yday[LeapYear(eventdb[iEntry].year) ? 1 : 0][eventdb[iEntry].month-1]+eventdb[iEntry].day; - eventdb[iEntry].edays=__mon_yday[LeapYear(eventdb[iEntry].year) ? 1 : 0][eventdb[iEntry].emonth-1]+eventdb[iEntry].eday; - break; - } - - p1=p2; - *p2=' '; - //third check for info - if ((p2=strchr(p1,';')) == NULL) - if ((p2=strchr(p1,'\n')) == NULL) - continue; - - *p2=0; - strcpy(eventdb[iEntry].info,&p1[1]); - - iEntry++; - if (iEntry >= MAXENTRYS) break; - } - - iCntEntries=iEntry; - - fclose(fd_evt); - } -} - -/****************************************************************************** - * SaveDatabase - ******************************************************************************/ -/*! - * save the database to the file - -*/ -void SaveDatabase(void) -{ - FILE *fd_evt; - int iEntry=0; - char info_tm1[7]; - char info_tm2[7]; - char info_yr1[5]; - char info_yr2[5]; - - // open the tuxcal-event-file - if ((fd_evt = fopen(CFGPATH EVTFILE, "w"))!=NULL) - { - while (iEntrynext) - { - if (!strcmp(par->id, P_ID_FBUFFER)) - { - fb = atoi(par->val); - } - else if (!strcmp(par->id, P_ID_RCINPUT)) - { - rc = atoi(par->val); - } - else if (!strcmp(par->id, P_ID_LCD)) - { - lcd = atoi(par->val); - } - else if (!strcmp(par->id, P_ID_OFF_X)) - { - sx = atoi(par->val); - } - else if (!strcmp(par->id, P_ID_END_X)) - { - ex = atoi(par->val); - } - else if (!strcmp(par->id, P_ID_OFF_Y)) - { - sy = atoi(par->val); - } - else if (!strcmp(par->id, P_ID_END_Y)) - { - ey = atoi(par->val); - } - } - - if (fb == -1 || rc == -1 || sx == -1 || ex == -1 || sy == -1 || ey == -1) - { - printf("TuxCal \n"); - return; - } -#endif - fb=open ( "/dev/fb/0", O_RDWR ); - - /* open Remote Control */ - rc = open ( "/dev/input/nevis_ir", O_RDONLY ); - if ( rc == -1 ) - { - perror ( "TuxCal " ); - exit ( 1 ); - } - - // keyboard - kb = open("/dev/vc/0", O_RDONLY); - - // read config - ReadConf(); - WriteConf(); - - // init framebuffer - if (ioctl(fb, FBIOGET_FSCREENINFO, &fix_screeninfo) == -1) - { - printf("TuxCal \n"); - return 2; - } - - if (ioctl(fb, FBIOGET_VSCREENINFO, &var_screeninfo) == -1) - { - printf("TuxCal \n"); - return 2; - } -#if 0 - if (ioctl(fb, FBIOPUTCMAP, (skin == 1) ? &colormap1 : (skin == 2) ? &colormap2 : &colormap3) == -1) - { - printf("TuxCal \n"); - return 2; - } -#endif - if (!(lfb = (unsigned char*)mmap(0, fix_screeninfo.smem_len, PROT_READ | PROT_WRITE, MAP_SHARED, fb, 0))) - { - printf("TuxCal \n"); - return 2; - } - - // init fontlibrary - if ((error = FT_Init_FreeType(&library))) - { - printf("TuxCal ", error); - munmap(lfb, fix_screeninfo.smem_len); - return 2; - } - - if ((error = FTC_Manager_New(library, 1, 2, 0, &MyFaceRequester, NULL, &manager))) - { - printf("TuxCal \n", error); - FT_Done_FreeType(library); - munmap(lfb, fix_screeninfo.smem_len); - return 2; - } - - if ((error = FTC_SBitCache_New(manager, &cache))) - { - printf("TuxCal \n", error); - FTC_Manager_Done(manager); - FT_Done_FreeType(library); - munmap(lfb, fix_screeninfo.smem_len); - return 2; - } - - if ((error = FTC_Manager_Lookup_Face(manager, FONT, &face))) - { - printf("TuxCal \n", error); - FTC_Manager_Done(manager); - FT_Done_FreeType(library); - munmap(lfb, fix_screeninfo.smem_len); - return 2; - } - - use_kerning = FT_HAS_KERNING(face); - - desc.face_id = FONT; - -#if FREETYPE_MAJOR == 2 && FREETYPE_MINOR == 0 - desc.type = ftc_image_mono; -#else - desc.flags = FT_LOAD_MONOCHROME; -#endif - - // init backbuffer - if ( ! ( lbb = malloc ( fix_screeninfo.line_length*var_screeninfo.yres ) ) ) - { - printf("TuxCal \n"); - FTC_Manager_Done(manager); - FT_Done_FreeType(library); - munmap(lfb, fix_screeninfo.smem_len); - return 2; - } - - memset ( lbb, 0, fix_screeninfo.line_length*var_screeninfo.yres ); - - read_neutrino_osd_conf ( &ex, &sx, &ey, &sy ); - if ( ( ex == -1 ) || ( sx == -1 ) || ( ey == -1 ) || ( sy == -1 ) ) - { - sx = 80; - ex = var_screeninfo.xres - 80; - sy = 80; - ey = var_screeninfo.yres - 80; - } - - printf("TuxCal init: FB %dx%dx%d stride %d\n", var_screeninfo.xres, var_screeninfo.yres, var_screeninfo.bits_per_pixel, fix_screeninfo.line_length);; - - // center output on screen - startx = sx + ((ex - sx - MAXSCREEN_X) / 2); - starty = sy + ((ey - sy - MAXSCREEN_Y) / 2); - - // lock keyboard-conversions, this is done by the plugin itself - fclose(fopen(KBLCKFILE,"w")); - - // get daemon status - if (!ControlDaemon(GET_STATUS)) - { - online = DAEMON_OFF; - } - - // remove last key & set rc to blocking mode - // dBox2 code -#if HAVE_DVB_API_VERSION == 3 - read(rc, &ev, sizeof(ev)); -// fcntl(rc, F_SETFL, fcntl(rc, F_GETFL) &~ O_NONBLOCK); - fcntl(rc, F_SETFL, fcntl(rc, F_GETFL) | O_NONBLOCK); -#else - // dreambox code - read(rc, &rccode, sizeof(rccode)); - fcntl(rc, F_SETFL, O_NONBLOCK); -#endif - - // read tuxcal.list file - LoadDatabase(); - -// ftime(&tb); -// gettimeofday(&tv,NULL); -// tb.time=tv.tv_sec; -// at = localtime(&tb.time); - time(&tt); // read the actual time - at = localtime(&tt); - - tShow_year = at->tm_year+1900; - tShow_mon = at->tm_mon+1; - tShow_day = at->tm_mday; - - int iSel=0; - int iSelInfo=0; - int iDayOfWeek; - int iLastPreMonth; - int iMonthDays; - int iActDayPos=0; - int year,mon; - int oldyear=0; - int iChanged=0; - rccode = 0; - - - // main loop - do - { - - // calculate the christian holidays - if (oldyear!=tShow_year) - { - FillEasternDays(tShow_year); - oldyear = tShow_year; - } - - // calculate the weekday for the first of the selected month - iDayOfWeek=DayOfWeek( 1, tShow_mon, tShow_year); - - // calculate the last day of the previous month - year=tShow_year; - mon=tShow_mon; - iLastPreMonth=1; - AddDays( &iLastPreMonth, &mon, &year, -1); - - // calculate days in this month - iMonthDays=monthdays[LeapYear(tShow_year)][tShow_mon-1]; - // calculate position of actual day - if ((tShow_mon == at->tm_mon+1) && (tShow_year == at->tm_year+1900)) - iActDayPos=iDayOfWeek+at->tm_mday-1; - else - iActDayPos=0; - - PaintGrid(iLastPreMonth, iDayOfWeek, iDayOfWeek+iMonthDays-1, iActDayPos, iDayOfWeek+tShow_day-1, iSel, &iSelInfo); - - GetRCCode(); - switch (rccode) - { - case RC_DBOX: - { - if (!ControlDaemon(TOGGLE_CLOCK)) // send hide/show clock to daemon - ShowMessage(CLOCKFAIL); // we didn't reach the daemon, show error - else ShowMessage(CLOCKOK); - } break; - - case RC_0: - { - tShow_year = at->tm_year+1900; - tShow_mon = at->tm_mon+1; - tShow_day = at->tm_mday; - } break; - - case RC_1: - case RC_2: - case RC_3: - case RC_4: - case RC_5: - case RC_6: - case RC_7: - case RC_8: - case RC_9: - { - } break; - - case RC_MINUS: - { - AddDays( &tShow_day, &tShow_mon, &tShow_year, -28); - } break; - - case RC_PLUS: - { - AddDays( &tShow_day, &tShow_mon, &tShow_year, 28); - } break; - - case RC_UP: - { - if (iSelInfo==0) AddDays( &tShow_day, &tShow_mon, &tShow_year, -7); - if (iSelInfo>1) iSelInfo--; - } break; - - case RC_DOWN: - { - if (iSelInfo==0) AddDays( &tShow_day, &tShow_mon, &tShow_year, +7); - if (iSelInfo) iSelInfo++; - } break; - - case RC_LEFT: - { - AddDays( &tShow_day, &tShow_mon, &tShow_year, -1); - iSelInfo=0; - } break; - - case RC_RIGHT: - { - AddDays( &tShow_day, &tShow_mon, &tShow_year, 1); - iSelInfo=0; - } break; - - case RC_OK: - { - if (iSelInfo) - { - int iEvt; - iEvt=IsEvent(tShow_day,tShow_mon,tShow_year); - if (iEvt) - { - if (iEventType[iSelInfo-1]>> - * (c) Robert "robspr1" Spreitzer 2006 (robert.spreitzer@inode.at) - *----------------------------------------------------------------------------- - * $Log: tuxcal.h,v $ - * Revision 1.08 2009/03/11 20:42:21 rhabarber1848 - * remove SuSv3 legacy functions: http://tuxbox-forum.dreambox-fan.de/forum/viewtopic.php?p=364177#p364177 - * - * Revision 1.07 2007/05/17 16:19:47 dbluelle - * Make plugins compile with freeetype 2.1.x on dreambox (as needed for Neutrino on Dreambox) - * - * Revision 1.06 2006/03/05 15:59:37 robspr1 - * - use /tmp/keyboard.lck to signal decoding of the keyboard - * - * Revision 1.05 2006/02/23 23:07:25 robspr1 - * - change SKIN2, signal up to 5 days, toggle clock-display file - * - * Revision 1.04 2006/02/18 14:57:13 robspr1 - * add signaling at fixed times, some small fixes - * - * Revision 1.03 2006/02/17 21:29:36 robspr1 - * -add command to switch/hide the clock - * - * Revision 1.02 2006/02/15 19:12:30 robspr1 - * first version in CVS - * - * Revision 1.01 2006/02/12 23:10:00 robspr1 - * - bugfix reading params POS_X and POS_Y (needed by the daemon) - * - * Revision 1.00 2006/01/31 14:37:48 robspr1 - * - first version - ******************************************************************************/ -// lots of code is from the tuxmail-project - -//#include "config.h" - -#if !defined(HAVE_DVB_API_VERSION) && defined(HAVE_OST_DMX_H) -#define HAVE_DVB_API_VERSION 1 -#endif -#define HAVE_DVB_API_VERSION 3 -#include -#include -#include -#include -#include -#include -#include -#include -#if HAVE_DVB_API_VERSION == 3 -#include -#endif -#include -#include -#include -#include -#include -#include -#include - -#include FT_FREETYPE_H -#include FT_CACHE_H -#include FT_CACHE_SMALL_BITMAPS_H - -#if ((defined(FREETYPE_MAJOR)) && (((FREETYPE_MAJOR == 2) && (((FREETYPE_MINOR == 1) && (FREETYPE_PATCH >= 9)) || (FREETYPE_MINOR > 1))) || (FREETYPE_MAJOR > 2))) -#define FTC_Manager_Lookup_Face FTC_Manager_LookupFace -#define _FTC_SBit_Cache_Lookup(a,b,c,d) FTC_SBitCache_Lookup(a,b,c,d,NULL) -#else -#define _FTC_SBit_Cache_Lookup(a,b,c,d) FTC_SBit_Cache_Lookup(a,b,c,d) -#endif - -//#include - -#define SCKFILE "/tmp/tuxcald.socket" //! socket-file, connection to daemon -#define RUNFILE "/var/etc/.tuxcald" //! autostart-file for daemon -#define CFGPATH "/var/tuxbox/config/tuxcal/" //! config-path -#define CFGFILE "tuxcal.conf" //! config-file -#define EVTFILE "tuxcal.list" //! database-file -#define KBLCKFILE "/tmp/keyboard.lck" //! file to lock keyboard-conversion - -//---------------------------------------------------- -// OSD different languages - -int osdidx = 0; // actual used language - -#define MAXOSD 2 - -char *days[7][MAXOSD] = { - { "Mo", "Mo" }, - { "Di", "Tu" }, - { "Mi", "We" }, - { "Do", "Th" }, - { "Fr", "Fr" }, - { "Sa", "Sa" }, - { "So", "So" } -}; - -char *monthmsg[12][MAXOSD] = { - { "Januar" , "January" }, - { "Februar" , "February" }, - { "März" , "March" }, - { "April" , "April" }, - { "Mai" , "May" }, - { "Juni" , "Juni" }, - { "Juli" , "July" }, - { "August" , "August" }, - { "September" , "September" }, - { "Oktober" , "October" }, - { "November" , "November" }, - { "Dezember" , "December" } -}; - -char* infomsg1[][MAXOSD] = { - { "Eintrag" , "entry" }, - { "selektierten löschen?" , "delete selected?" }, - { "neuen hinzufügen?" , "add new?" }, - { "Änderungen übernehmen?" , "save changes" }, - { "Änderungen verwerfen?" , "lose changes" } -}; - -char *infotype[][MAXOSD] = { - { "Geburtstag" , "Birthday" }, - { "Einträge" , "Entries" }, - { "Zeitraum" , "Period" }, - { "Feiertag" , "Holiday" } -}; - -char *infohelp[][MAXOSD] = { - { "löschen" , "delete" }, - { "markieren" , "select" }, - { "einfügen" , "insert" }, - { "bearbeiten" , "edit" }, - { "[OK] Einträge anzeigen [dBox/Menü] Uhrzeit ein/ausblenden [0] heute" , "[OK] show entrys [dBox/menu] show/hide clock [0] today" } -}; - -char *szEditBoxInfo[][MAXOSD] ={ - { "Typ auswählen" , "select event type" }, - { "Jahreszahl ein/ausblenden" , "toogle year" }, - { "Uhrzeit ein/ausblenden" , "toogle time" }, - { "Enddatum ein/ausblenden" , "toogle end-date" }, - { "Tag Monat Jahr Stunde Minute", "day month year hour minute" }, - { "Startdatum" , "start date" }, - { "Enddatum" , "end date" } -}; - -char *vdaysnames[][MAXOSD] = { - { "Ostersonntag" , "eastern sunday" }, - { "Ostermontag" , "eastern monday" }, - { "Christi Himmelfahrt" , "Christi Himmelfahrt" }, - { "Pfingstsonntag" , "Pfingsten" }, - { "Pfingstmontag" , "Pfingsten" }, - { "Fronleichnam" , "Fronleichnam" }, - { "Aschermittwoch" , "Aschermittwoch" }, - { "Muttertag" , "Muttertag" }, - { "Sommerzeit" , "summer time" }, - { "Winterzeit" , "winter time" }, - { "heiliger Abend" , "christmas" }, - { "1. Weihnachtsfeiertag" , "christmas" }, - { "2. Weihnachtsfeiertag" , "christmas" }, - { "heil. 3 Könige" , "three kings" }, - { "Neujahr" , "new year" }, - { "Sylvester" , "sylvester" }, - { "Valentinstag" , "valentine" }, - { "Mai-/Staatsfeiertag" , "first may" }, - { "Maria Himmelfahrt" , "Maria Himmelfahrt" }, - { "Nikolaus" , "st. claus" }, - { "Rosenmontag" , "Rosenmontag" }, - { "Gründonnerstag" , "Gründonnerstag" }, - { "Karfreitag" , "Karfreitag" }, - { "D: Tag der Einheit" , "D: Tag der Einheit" }, - { "Ö: Nationalfeiertag" , "Ö: Nationalfeiertag" } -}; - -// ShowMessage output -enum {NODAEMON, STARTDONE, STARTFAIL, STOPDONE, STOPFAIL, BOOTON, BOOTOFF, DATE, CLOCKFAIL, CLOCKOK, INFO}; -char *infomsg[][MAXOSD] = { - { "Daemon ist nicht geladen!" , "Daemon not running!" }, - { "Abfrage wurde gestartet." , "Polling started." }, - { "Start ist fehlgeschlagen!" , "Start failed!" }, - { "Abfrage wurde gestoppt." , "Polling stopped." }, - { "Stop ist fehlgeschlagen!" , "Stop failed!" }, - { "Autostart aktiviert." , "Autostart enabled." }, - { "Autostart deaktiviert." , "Autostart disabled." }, - { "%d.%m.%Y %H:%M:%S" , "%m/%d/%Y %H:%M:%S" }, - { "Uhr ist fehlgeschlagen!" , "Clock failed!" }, - { "Uhranzeige umgeschaltet." , "displaying clock changed" } -}; - - -//---------------------------------------------------- -// remote-control and keyboard - -#if HAVE_DVB_API_VERSION == 3 -struct input_event ev; //! input event for dBox -#else -unsigned char kbcode; //! keyboard-input for Dreambox -char tch[100]; //! variable for keyboard-reading -#endif - -unsigned short rccode; //! remote-control code - -// rc codes - -#if HAVE_DVB_API_VERSION == 1 // Dreambox-codes - -#define RC1_0 0x5C00 -#define RC1_1 0x5C01 -#define RC1_2 0x5C02 -#define RC1_3 0x5C03 -#define RC1_4 0x5C04 -#define RC1_5 0x5C05 -#define RC1_6 0x5C06 -#define RC1_7 0x5C07 -#define RC1_8 0x5C08 -#define RC1_9 0x5C09 -#define RC1_STANDBY 0x5C0C -#define RC1_UP 0x5C0E -#define RC1_DOWN 0x5C0F -#define RC1_PLUS 0x5C16 -#define RC1_MINUS 0x5C17 -#define RC1_HOME 0x5C20 -#define RC1_DBOX 0x5C27 -#define RC1_MUTE 0x5C28 -#define RC1_RED 0x5C2D -#define RC1_RIGHT 0x5C2E -#define RC1_LEFT 0x5C2F -#define RC1_OK 0x5C30 -#define RC1_BLUE 0x5C3B -#define RC1_YELLOW 0x5C52 -#define RC1_GREEN 0x5C55 -#define RC1_HELP 0x5C82 - -// kb codes - -#define KEY_0 0x5C00 -#define KEY_1 0x5C01 -#define KEY_2 0x5C02 -#define KEY_3 0x5C03 -#define KEY_4 0x5C04 -#define KEY_5 0x5C05 -#define KEY_6 0x5C06 -#define KEY_7 0x5C07 -#define KEY_8 0x5C08 -#define KEY_9 0x5C09 -#define KEY_POWER 0x5C0C -#define KEY_UP 0x5C0E -#define KEY_DOWN 0x5C0F -#define KEY_VOLUMEUP 0x5C16 -#define KEY_VOLUMEDOWN 0x5C17 -#define KEY_HOME 0x5C20 -#define KEY_SETUP 0x5C27 -#define KEY_MUTE 0x5C28 -#define KEY_RED 0x5C2D -#define KEY_RIGHT 0x5C2E -#define KEY_LEFT 0x5C2F -#define KEY_OK 0x5C30 -#define KEY_BLUE 0x5C3B -#define KEY_YELLOW 0x5C52 -#define KEY_GREEN 0x5C55 -#define KEY_HELP 0x5C82 - -#endif - -// defines for pressing 0 - 9 on remote-control -#define RC_0 '0' -#define RC_1 '1' -#define RC_2 '2' -#define RC_3 '3' -#define RC_4 '4' -#define RC_5 '5' -#define RC_6 '6' -#define RC_7 '7' -#define RC_8 '8' -#define RC_9 '9' - -// defines for remote-control and keyboard -#define RC_RIGHT 0x0191 -#define RC_LEFT 0x0192 -#define RC_UP 0x0193 -#define RC_DOWN 0x0194 -#define RC_PLUS 0x0195 -#define RC_MINUS 0x0196 - -#define RC_OK 0x0D -#define RC_STANDBY 0x1C -#define RC_ESC RC_HOME - -#define RC_HOME 0x01B1 -#define RC_MUTE 0x01B2 -#define RC_HELP 0x01B3 -#define RC_DBOX 0x01B4 - -#define RC_GREEN 0x01A1 -#define RC_YELLOW 0x01A2 -#define RC_RED 0x01A3 -#define RC_BLUE 0x01A4 - -#define RC_PAUSE RC_HELP -#define RC_ALTGR 0x12 -#define RC_BS 0x08 -#define RC_POS1 RC_HOME -#define RC_END 0x13 -#define RC_INS 0x10 -#define RC_ENTF 0x11 -#define RC_STRG 0x00 -#define RC_LSHIFT 0x0E -#define RC_RSHIFT 0x0E -#define RC_ALT 0x0F -#define RC_NUM RC_DBOX -#define RC_ROLLEN 0x00 -#define RC_F5 0x01C5 -#define RC_F6 0x01C6 -#define RC_F7 0x01C7 -#define RC_F8 0x01C8 -#define RC_F9 0x01C9 -#define RC_F10 0x01CA -#define RC_RET 0x0D -#define RC_RET1 0x01CC -#define RC_CAPSLOCK 0x01CD -#define RC_ON 0x01CE - -#define RC_F1 RC_RED -#define RC_F2 RC_GREEN -#define RC_F3 RC_YELLOW -#define RC_F4 RC_BLUE -#define RC_PAGEUP RC_PLUS -#define RC_PAGEDOWN RC_MINUS - -#define REPKEYDELAY 4 - -#if HAVE_DVB_API_VERSION == 3 // only for dBox -// conversion-tables for infrared-keyboard -// normal key -const int rctable[] = -{ - 0x00, RC_ESC, '1', '2', '3', '4', '5', '6', '7', '8', '9', '0', 'ß', '´', RC_BS, 0x09, - 'q', 'w', 'e', 'r', 't', 'z', 'u', 'i', 'o', 'p', 'ü', '+', RC_RET, RC_STRG, 'a', 's', - 'd', 'f', 'g', 'h', 'j', 'k', 'l', 'ö', 'ä', '^', RC_LSHIFT, '#', 'y', 'x', 'c', 'v', - 'b', 'n', 'm', ',', '.', '-', RC_RSHIFT, 0x00, RC_ALT, 0x20, RC_CAPSLOCK,RC_F1,RC_F2,RC_F3,RC_F4,RC_F5, - RC_F6,RC_F7,RC_F8,RC_F9,RC_F10,RC_NUM,RC_ROLLEN,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, RC_STANDBY, 0x00, 0x00, 0x00, 0x00, '<', RC_OK, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, RC_ALTGR, 0x00, RC_POS1, RC_UP, RC_PAGEUP, RC_LEFT, RC_RIGHT, RC_END, RC_DOWN,RC_PAGEDOWN,RC_INS,RC_ENTF, - 0x00, RC_MUTE, RC_MINUS, RC_PLUS, RC_STANDBY, 0x00, 0x00, RC_PAUSE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 -}; -// shift-key also pressed -const int rcshifttable[] = -{ - 0x00, RC_ESC, '!', '"', '§', '$', '%', '&', '/', '(', ')', '=', '?', '`', 0x08, 0x09, - 'Q', 'W', 'E', 'R', 'T', 'Z', 'U', 'I', 'O', 'P', 'Ü', '*', RC_RET1, RC_STRG, 'A', 'S', - 'D', 'F', 'G', 'H', 'J', 'K', 'L', 'Ö', 'Ä', '°', RC_LSHIFT, 0x27, 'Y', 'X', 'C', 'V', - 'B', 'N', 'M', ';', ':', '_', RC_RSHIFT, 0x00, RC_ALT, 0x20, RC_CAPSLOCK,RC_F1,RC_F2,RC_F3,RC_F4,RC_F5, - RC_F6,RC_F7,RC_F8,RC_F9,RC_F10,RC_NUM,RC_ROLLEN,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, RC_STANDBY, 0x00, 0x00, 0x00, 0x00, '>' -}; -// alt-gr-key also pressed -const int rcaltgrtable[] = -{ - 0x00, RC_ESC, 0x00, '²', '³', 0x00, 0x00, 0x00, '{', '[', ']', '}', '\\', 0x00, 0x00, 0x00, - '@', 0x00, '€', 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, '~', RC_RET1, RC_STRG, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, RC_LSHIFT, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 'µ', 0x00, 0x00, 0x00, RC_RSHIFT, 0x00, RC_ALT, 0x20, RC_CAPSLOCK,RC_F1,RC_F2,RC_F3,RC_F4,RC_F5, - RC_F6,RC_F7,RC_F8,RC_F9,RC_F10,RC_NUM,RC_ROLLEN,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, RC_STANDBY, 0x00, 0x00, 0x00, 0x00, '|' -}; -#endif - -// displaying function-keys -#define KEYBOX_KEYS 12 - -char *szKeyBoxInfo[KEYBOX_KEYS] = { - " @!""#$%&'()*+-./[]\\1" , "ABC2abc" , "DEF3def" , - "GHI4ghi" , "JKL5jkl" , "MNO6mno" , - "PQRS7pqrs", "TUV8tuv" , "WXYZ9wxyz", - "0" , "" , "" } ; - -char *szKeyBoxKey[KEYBOX_KEYS] = { - "1" , "2" , "3" , - "4" , "5" , "6" , - "7" , "8" , "9", - "0" , "+" , "-" } ; - -char *szKeyBBoxInfo[KEYBOX_KEYS][MAXOSD] = { - { "red" , "ROT" } , { "OK" , "OK" } , { "entf." , "clr ln" }, - { "green" , "GRÜN" } , { "HOME", "HOME" } , { "leeren", "clr all" } , - { "yellow", "GELB" } , { "Anf.", "pos1" } , { "plus" , "plus" }, - { "blue" , "BLAU" } , { "Ende", "end" } , { "minus" , "minus"} -} ; - -#if HAVE_DVB_API_VERSION == 1 -char *szKeyBBoxKey[KEYBOX_KEYS] = { - "F1" , "" , "" , - "F2" , "" , "" , - "M1" , "" , "P+", - "M2" , "" , "P-" } ; -#else -char *szKeyBBoxKey[KEYBOX_KEYS] = { - "F1" , "F5" , "F9" , - "F2" , "F6" , "F10" , - "F3" , "F7" , "Pg+", - "F4" , "F8" , "Pg-" } ; -#endif - -const char *szDirectStyle[4] = { -"ABC", "Abc", "abc", "keyboard" }; - - - -//---------------------------------------------------- -// calendar calculations - -// for calculation the day of the week -const int monthcode[12] = { - 6, 2, 2, 5, 0, 3, 5, 1, 4, 6, 2, 4 -}; - -// days per month -const int monthdays[2][12] = { - { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }, // Normal years. - { 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 } // Leap years. -}; - -// How many days come before each month (0-12). -const int __mon_yday[2][13] = - { - { 0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365 }, // Normal years. - { 0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335, 366 } // Leap years. - }; - - -//---------------------------------------------------- -// functions - -void ShowMessage(int message); -int IsEvent(int day, int month, int year); -int WeekNumber( int y, int m, int d ); -int LeapYear(int year); - -//---------------------------------------------------- -// freetype stuff - -//#define FONT FONTDIR "/pakenham.ttf" -#define FONT "/share/fonts/neutrino.ttf" - -// definitions for string-rendering and size -enum {LEFT, CENTER, RIGHT, FIXEDLEFT, FIXEDCENTER, FIXEDRIGHT}; -enum {SMALL, NORMAL, BIG}; - -FT_Library library; -FTC_Manager manager; -FTC_SBitCache cache; -FTC_SBit sbit; -#if FREETYPE_MAJOR == 2 && FREETYPE_MINOR == 0 -FTC_ImageDesc desc; -#else -FTC_ImageTypeRec desc; -#endif -FT_Face face; -FT_UInt prev_glyphindex; -FT_Bool use_kerning; - -//---------------------------------------------------- -// config -int skin_offset=0; -char osd = 'G'; //! OSD language -int skin = 1; //! which skin to use -int startdelay = 30; //! startdelay for daemon to check event -char logging = 'Y'; //! logging to file -char audio = 'Y'; //! signal event per audio -int video=1; //! signal event per video (different types) -int sigtype=1; //! signal type -int sigmode=0; //! signal mode -char sigtime[80]; //! fix signal-times -int webport=80; //! webport for using webinterface -char webuser[32] = ""; //! for using webinterface -char webpass[32] = ""; //! for using webinterface -char disp_date = 'N'; //! display the date -char disp_clock = 'Y'; //! display the clock -char disp_sec = 'Y'; //! display the second -char disp_size = 'S'; //! display size 'S'mall, 'N'ormal, 'B'ig -int disp_color = 1; //! display color -int disp_back = 2; //! display back-color -int disp_detect = 1; //! detect color-map -char disp_mail = 'Y'; //! display mail notification -int cstartx = 500; //! x position for displaying daemon-clock -int cstarty = 30; //! y position for displaying daemon-clock -char show_clock = 'Y'; //! show the clock - -char *szFmtStr[] = { - "%02u" , "%04u" -}; - -//---------------------------------------------------- -//---------------------------------------------------- -// defines for setting the output -#define FONTSIZE_SMALL 24 -#define FONTSIZE_NORMAL 32 -#define FONTSIZE_BIG 40 - -#define MAXSCREEN_X 840 //560 Dbox -#define MAXSCREEN_Y 500 -#define MSGBOX_SX 145 -#define MSGBOX_SY 175 -#define MSGBOX_EX 455 -#define MSGBOX_EY 325 - -#define GRIDLINE 32 -#define GRIDLINE_SMALL 24 -#define GRIDBOX_X (MAXSCREEN_X/7) -#define GRIDBOX_CY1 420 -#define GRIDBOX_CY2 300 - -#define LNWIDTH 2 - -#define TEXTWIDTH (MSGBOX_EX-MSGBOX_SX-4) -#define HEADERSTART (MSGBOX_SY+FONTSIZE_BIG+2) -#define HEADERTEXTSTART (HEADERSTART-7) -#define TEXTSTART ((MSGBOX_EY-HEADERSTART)/2-7+HEADERSTART) -#define BUTTONSY (MSGBOX_EY-FONTSIZE_SMALL-14) -#define BUTTONX 50 -#define BUTTONSX (((MSGBOX_EX-MSGBOX_SX)-3*BUTTONX)/2 + MSGBOX_SX) -#define GRIDCAL (GRIDLINE+GRIDLINE_SMALL) -#define GRIDLINE_INFO ((GRIDBOX_CY1-GRIDBOX_CY2)/4) - -#define KEYBOX_SPACE 5 -#define KEYBOX_HEIGHT 25 -#define KEYBOX_WIDTH 90 - -#define FONTHEIGHT_BIG 32 -#define FONTHEIGHT_NORMAL 32 -#define FONTHEIGHT_SMALL 24 - -#define EDITFOOTER_Y (MAXSCREEN_Y-4*(KEYBOX_HEIGHT+KEYBOX_SPACE)-2*KEYBOX_SPACE) -#define EDITX 20 - -//---------------------------------------------------- -//---------------------------------------------------- -// defines for database -#define MAXINFOLEN 80 -#define MAXENTRYS 500 -#define MAXPERDAY 10 -#define MAXINFOEDITLEN 64 - -//---------------------------------------------------- -#define DAEMON_ON_NOSIGNAL 0 -#define DAEMON_ON_SIGNAL 1 -#define DAEMON_OFF 2 -//---------------------------------------------------- -// variables -struct tm *at; //! actual time -time_t tt; //! actual time -int tShow_year; //! year to show -int tShow_mon; //! month to show -int tShow_day; //! day to show -int iEventType[MAXPERDAY]; //! structure filled with event-index by IsEvent() -int iCntEntries; //! total number of entries in database -int nEditStyle = 1; //! style for editing (RC, KB) -int intervall; //! update clock-info every x seconds -char online; //! are we connected to the daemon -char versioninfo_p[12]; //! plugin version -char versioninfo_d[12] = "?.??"; //! daemon version - -//---------------------------------------------------- -// database for all events -enum {FREE, BIRTHDAY, EVENT, PERIOD, HOLIDAY, COMMENT, UNUSED, SPACE}; -typedef struct tagEVT_DB -{ - int type; //! type of event: BIRTHDAY, EVENT, PERIOD, HOLIDAY or FREE (not used) - int year; //! year for the event , for birthday the birth-year, 0 for all years - int month; //! month of the event - int day; //! day of the event - int hour; //! hour of the event, -1 for all-day event - int min; //! minute of the event, ignore if hour == -1 - int days; //! days since 1.1. - int eyear; //! end-year for the event - int emonth; //! end-month of the event - int eday; //! end-day of the event - int ehour; //! end-hour of the event, -1 for all-day event - int emin; //! end-minute of the event, ignore if hour == -1 - int edays; //! days since 1.1. - char info[MAXINFOLEN]; //! info for the event -} EVT_DB, *PEVT_DB; - -EVT_DB eventdb[MAXENTRYS]; - -#define OFFSET_E 1 //! index for eastern -#define OFFSET_EM 2 //! index for eastern -#define OFFSET_H 3 //! index for "christi himmelfahrt" -#define OFFSET_P 4 //! index for "pfingsten" -#define OFFSET_PM 5 //! index for "pfingsten" -#define OFFSET_F 6 //! index for "fronleichnam" -#define OFFSET_A 7 //! aschermittwoch -#define OFFSET_M 8 //! Muttertag -#define OFFSET_SZ 9 //! Sommerzeit -#define OFFSET_WZ 10 //! Winterzeit -#define OFFSET_W0 11 //! heiliger abend -#define OFFSET_W1 12 //! 1. Weihnachtstag -#define OFFSET_W2 13 //! 2. Weihnachtstag -#define OFFSET_3K 14 //! hl. 3 Koenige -#define OFFSET_N 15 //! Neujahr -#define OFFSET_S 16 //! Silvester -#define OFFSET_V 17 //! Valentinstag -#define OFFSET_1M 18 //! 1. may -#define OFFSET_MH 19 //! maria himmelfahrt -#define OFFSET_NI 20 //! nikolaus -#define OFFSET_RM 21 //! rosenmontag -#define OFFSET_GD 22 //! gruendonnerstag -#define OFFSET_KF 23 //! karfreitag -#define OFFSET_ND 24 //! tag der deutschen einheit -#define OFFSET_NA 25 //! nationalfeiertag oesterreich -#define NOF_VDAYS 25 - - -// structure for the christian holidays in a year -typedef struct tagVariableDays -{ - int mon; // month - int day; // year -} VARIABLEDAY, *PVARIABLEDAY; - -VARIABLEDAY varaibledays[NOF_VDAYS]; - -// daemon commands -enum {GET_STATUS, SET_STATUS, GET_VERSION, RELOAD_DB, TOGGLE_CLOCK}; - -//---------------------------------------------------- -// devs -int fb, rc, kb, lcd; - -//---------------------------------------------------- -// framebuffer stuff -enum {FILL, GRID}; -enum {TRANSP, WHITE, SKIN0, SKIN1, SKIN2, ORANGE, GREEN, YELLOW, RED, BLUE, GREY, DAY1, DAY2, DAY3, DAY4, DAY5, SKIN3, BLACK, LGREY, MAGENTA}; - -unsigned char *lfb = 0, *lbb = 0; - -struct fb_fix_screeninfo fix_screeninfo; -struct fb_var_screeninfo var_screeninfo; -unsigned char bgra[][4] ={ -"\x00\x00\x00\x00","\xff\xff\xff\xff","\x80\x00\x00\xc0","\x80\x40\x00\xc0", -"\xff\x80\x00\xc0","\x00\xc0\xff\xff","\x00\xff\x00\xff","\x00\xff\xff\xff", -"\x00\x00\xff\xff","\xff\x00\x00\xff","\xb0\xb0\xb0\xff","\x50\x50\xff\xff", -"\x00\xc0\xff\xff","\xb0\xb0\xb0\xff","\x00\xff\x00\xff","\x00\xff\xff\xff", -"\xff\x50\x50\xff","\x00\x00\x00\xff","\x50\x50\x50\xff","\xff\x00\xff\xff" -, -"\x00\x00\x00\x00","\xff\xff\xff\xff","\x4d\x3a\x25\xc0","\x77\x63\x4a\xc0", -"\xc1\xac\x97\xc0","\x00\xc0\xff\xff","\x00\xff\x00\xff","\x00\xff\xff\xff", -"\x00\x00\xff\xff","\xff\x00\x00\xff","\xb0\xb0\xb0\xff","\xff\xb0\xff\xff", -"\xff\xb0\xb0\xff","\xb0\x50\x50\xff","\xff\x75\x50\xff","\xff\x98\x50\xff", -"\xff\x50\x50\xff","\x00\x00\x00\xff","\x50\x50\x50\xff","\xff\x00\xff\xff" -, -"\x00\x00\x00\x00","\xff\xff\xff\xff","\x00\x00\x00\xff","\x80\x00\x00\xff", -"\xff\x80\x00\xff","\x00\xc0\xff\xff","\x00\xff\x00\xff","\x00\xff\xff\xff", -"\x00\x00\xff\xff","\xff\x00\x00\xff","\xb0\xb0\xb0\xff","\x50\x50\xff\xff", -"\x50\xff\x50\xff","\xb0\xb0\xb0\xff","\x00\xff\x00\xff","\x00\xff\xff\xff", -"\xff\x50\x50\xff","\x00\x00\x00\xff","\x50\x50\x50\xff","\xff\x00\xff\xff" -}; - -#if 0 - -// WHITE SKIN0 SKIN1 SKIN2 ORANGE GREEN YELLOW RED BLUE GREY DAY1 DAY2 DAY3 DAY4 DAY5 SKIN3 BLACK LGREY MAGENTA -unsigned short rd1[] = {0xFF<<8, 0x00<<8, 0x00<<8, 0x00<<8, 0xFF<<8, 0x00<<8, 0xFF<<8, 0xFF<<8, 0x00<<8, 0xB0<<8, 0xFF<<8, 0xFF<<8, 0xB0<<8, 0x00<<8, 0xFF<<8, 0x50<<8, 0x00<<8, 0x50<<8, 0xFF<<8}; -unsigned short gn1[] = {0xFF<<8, 0x00<<8, 0x40<<8, 0x80<<8, 0xC0<<8, 0xFF<<8, 0xFF<<8, 0x00<<8, 0x00<<8, 0xB0<<8, 0x50<<8, 0xC0<<8, 0xB0<<8, 0xFF<<8, 0xFF<<8, 0x50<<8, 0x00<<8, 0x50<<8, 0x00<<8}; -unsigned short bl1[] = {0xFF<<8, 0x80<<8, 0x80<<8, 0xFF<<8, 0x00<<8, 0x00<<8, 0x00<<8, 0x00<<8, 0xFF<<8, 0xB0<<8, 0x50<<8, 0x00<<8, 0xB0<<8, 0x00<<8, 0x00<<8, 0xFF<<8, 0x00<<8, 0x50<<8, 0xFF<<8}; -unsigned short tr1[] = {0x0000, 0x0A00, 0x0A00, 0x0A00, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }; -struct fb_cmap colormap1 = {1, 19, rd1, gn1, bl1, tr1}; - -unsigned short rd2[] = {0xFF<<8, 0x25<<8, 0x4A<<8, 0x97<<8, 0xFF<<8, 0x00<<8, 0xFF<<8, 0xFF<<8, 0x00<<8, 0xB0<<8, 0xFF<<8, 0xB0<<8, 0x50<<8, 0x50<<8, 0x50<<8, 0x50<<8, 0x00<<8, 0x50<<8, 0xFF<<8}; -unsigned short gn2[] = {0xFF<<8, 0x3A<<8, 0x63<<8, 0xAC<<8, 0xC0<<8, 0xFF<<8, 0xFF<<8, 0x00<<8, 0x00<<8, 0xB0<<8, 0xB0<<8, 0xB0<<8, 0x50<<8, 0x75<<8, 0x98<<8, 0x50<<8, 0x00<<8, 0x50<<8, 0x00<<8}; -unsigned short bl2[] = {0xFF<<8, 0x4D<<8, 0x77<<8, 0xC1<<8, 0x00<<8, 0x00<<8, 0x00<<8, 0x00<<8, 0xFF<<8, 0xB0<<8, 0xFF<<8, 0xFF<<8, 0xB0<<8, 0xFF<<8, 0xFF<<8, 0xFF<<8, 0x00<<8, 0x50<<8, 0xFF<<8}; -unsigned short tr2[] = {0x0000, 0x0A00, 0x0A00, 0x0A00, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }; -struct fb_cmap colormap2 = {1, 19, rd2, gn2, bl2, tr2}; - -unsigned short rd3[] = {0xFF<<8, 0x00<<8, 0x00<<8, 0x00<<8, 0xFF<<8, 0x00<<8, 0xFF<<8, 0xFF<<8, 0x00<<8, 0xB0<<8, 0xFF<<8, 0x50<<8, 0xB0<<8, 0x00<<8, 0xFF<<8, 0x50<<8, 0x00<<8, 0x50<<8, 0xFF<<8}; -unsigned short gn3[] = {0xFF<<8, 0x00<<8, 0x00<<8, 0x80<<8, 0xC0<<8, 0xFF<<8, 0xFF<<8, 0x00<<8, 0x00<<8, 0xB0<<8, 0x50<<8, 0xFF<<8, 0xB0<<8, 0xFF<<8, 0xFF<<8, 0x50<<8, 0x00<<8, 0x50<<8, 0x00<<8}; -unsigned short bl3[] = {0xFF<<8, 0x00<<8, 0x80<<8, 0xFF<<8, 0x00<<8, 0x00<<8, 0x00<<8, 0x00<<8, 0xFF<<8, 0xB0<<8, 0x50<<8, 0x50<<8, 0xB0<<8, 0x00<<8, 0x00<<8, 0xFF<<8, 0x00<<8, 0x50<<8, 0xFF<<8}; -unsigned short tr3[] = {0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }; -struct fb_cmap colormap3 = {1, 19, rd3, gn3, bl3, tr3}; -#endif -int startx, starty, sx, ex, sy, ey; - -//---------------------------------------------------- -// object to render -enum {OBJ_CIRCLE, OBJ_HEART, OBJ_MARKER, OBJ_SCROLLUP, OBJ_SCROLLDN, OBJ_CLOCK}; -#define OBJ_SX 15 // lines for object -#define OBJ_SY 15 // columns for object - -char scroll_up[] = -{ - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,1,1,0,0,0,0,0,0, - 0,0,0,0,0,0,0,1,1,0,0,0,0,0,0, - 0,0,0,0,0,0,1,1,1,1,0,0,0,0,0, - 0,0,0,0,0,0,1,1,1,1,0,0,0,0,0, - 0,0,0,0,0,1,1,1,1,1,1,0,0,0,0, - 0,0,0,0,0,1,1,1,1,1,1,0,0,0,0, - 0,0,0,0,1,1,1,1,1,1,1,1,0,0,0, - 0,0,0,0,1,1,1,1,1,1,1,1,0,0,0, - 0,0,0,1,1,1,1,1,1,1,1,1,1,0,0, - 0,0,0,1,1,1,1,1,1,1,1,1,1,0,0, - 0,0,1,1,1,1,1,1,1,1,1,1,1,1,0, - 0,0,1,1,1,1,1,1,1,1,1,1,1,1,0, - 0,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 0,1,1,1,1,1,1,1,1,1,1,1,1,1,1 -}; - -char scroll_dn[] = -{ - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 0,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 0,0,1,1,1,1,1,1,1,1,1,1,1,1,0, - 0,0,1,1,1,1,1,1,1,1,1,1,1,1,0, - 0,0,0,1,1,1,1,1,1,1,1,1,1,0,0, - 0,0,0,1,1,1,1,1,1,1,1,1,1,0,0, - 0,0,0,0,1,1,1,1,1,1,1,1,0,0,0, - 0,0,0,0,1,1,1,1,1,1,1,1,0,0,0, - 0,0,0,0,0,1,1,1,1,1,1,0,0,0,0, - 0,0,0,0,0,1,1,1,1,1,1,0,0,0,0, - 0,0,0,0,0,0,1,1,1,1,0,0,0,0,0, - 0,0,0,0,0,0,1,1,1,1,0,0,0,0,0, - 0,0,0,0,0,0,0,1,1,0,0,0,0,0,0, - 0,0,0,0,0,0,0,1,1,0,0,0,0,0,0 -}; - -char circle[] = -{ - 0,0,0,0,0,1,1,1,1,1,0,0,0,0,0, - 0,0,0,1,1,1,1,1,1,1,1,1,0,0,0, - 0,0,1,1,1,1,1,1,1,1,1,1,1,0,0, - 0,1,1,1,1,1,1,1,1,1,1,1,1,1,0, - 0,1,1,1,1,1,1,1,1,1,1,1,1,1,0, - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 0,1,1,1,1,1,1,1,1,1,1,1,1,1,0, - 0,1,1,1,1,1,1,1,1,1,1,1,1,1,0, - 0,0,1,1,1,1,1,1,1,1,1,1,1,0,0, - 0,0,0,1,1,1,1,1,1,1,1,1,0,0,0, - 0,0,0,0,0,1,1,1,1,1,0,0,0,0,0 -}; - -char heart[] = -{ - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,1,1,1,0,0,0,1,1,1,0,0,0, - 0,0,1,1,1,1,1,0,1,1,1,1,1,0,0, - 0,1,1,1,1,1,1,1,1,1,1,1,1,1,0, - 0,1,1,1,1,1,1,1,1,1,1,1,1,1,0, - 0,1,1,1,1,1,1,1,1,1,1,1,1,1,0, - 0,0,1,1,1,1,1,1,1,1,1,1,1,0,0, - 0,0,0,1,1,1,1,1,1,1,1,1,0,0,0, - 0,0,0,0,1,1,1,1,1,1,1,0,0,0,0, - 0,0,0,0,0,1,1,1,1,1,0,0,0,0,0, - 0,0,0,0,0,0,1,1,1,0,0,0,0,0,0, - 0,0,0,0,0,0,0,1,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -}; - -char marker[] = -{ - 0,0,0,0,0,0,1,1,1,0,0,0,0,0,0, - 0,0,0,0,0,1,1,1,1,1,0,0,0,0,0, - 0,0,0,0,0,1,1,1,1,1,0,0,0,0,0, - 0,0,0,0,1,1,1,1,1,1,1,0,0,0,0, - 0,0,0,0,0,1,1,1,1,1,0,0,0,0,0, - 0,0,0,0,0,1,1,1,1,1,0,0,0,0,0, - 0,0,0,0,0,1,1,1,1,1,0,0,0,0,0, - 0,0,0,0,0,0,1,1,1,0,0,0,0,0,0, - 0,0,0,0,0,0,1,1,1,0,0,0,0,0,0, - 0,0,0,0,0,0,1,1,1,0,0,0,0,0,0, - 0,0,0,0,0,0,0,1,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,1,1,1,0,0,0,0,0,0, - 0,0,0,0,0,1,1,1,1,1,0,0,0,0,0, - 0,0,0,0,0,0,1,1,1,0,0,0,0,0,0 -}; - -char symbolclock[] = -{ -// 0,0,0,0,0,0,1,1,1,0,0,0,0,0,0, - 0,1,1,0,0,0,1,1,1,0,0,0,1,1,0, - 0,1,1,1,0,1,1,1,1,1,0,1,1,1,0, - 0,1,1,1,1,1,1,0,1,1,1,1,1,1,0, - 0,0,1,1,1,1,1,0,1,1,1,1,1,0,0, - 0,1,1,1,1,1,1,0,1,1,1,1,1,1,0, - 0,1,1,1,1,1,1,0,1,1,1,1,1,1,0, - 1,1,1,1,1,1,1,0,1,1,1,1,1,1,1, - 1,1,1,1,1,1,0,0,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,0,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,0,0,1,1,1,1,1,1, - 1,1,1,1,1,1,1,0,1,0,1,1,1,1,1, - 0,1,1,1,1,1,1,1,1,1,0,1,1,1,0, - 0,1,1,1,1,1,1,1,1,1,1,0,1,1,0, - 0,0,1,1,1,1,1,1,1,1,1,1,1,0,0, - 0,0,0,1,1,1,1,1,1,1,1,1,0,0,0 -// 0,0,0,0,0,1,1,1,1,1,0,0,0,0,0 -}; - diff --git a/archive-sources/tuxcom/tuxcom.c b/archive-sources/tuxcom/tuxcom.c deleted file mode 100644 index 15213b7..0000000 --- a/archive-sources/tuxcom/tuxcom.c +++ /dev/null @@ -1,4913 +0,0 @@ -/* - TuxCom - TuxBox-Commander Plugin - - Copyright (C) 2004 'dbluelle' (dbluelle@blau-weissoedingen.de) - - Homepage: http://www.blau-weissoedingen.de/dreambox/ - - License: GPL - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA -*/ -#include "tuxcom.h" -/****************************************************************************** - * GetRCCode (Code from Tuxmail) - ******************************************************************************/ - - - -int GetRCCode(int mode) -{ - static int count = 0; - //get code - struct input_event ev; - static __u16 rc_last_key = KEY_RESERVED; - static __u16 rc_last_code = KEY_RESERVED; - if(read(rc, &ev, sizeof(ev)) == sizeof(ev)) - { - if(ev.value) - { - if(ev.code == rc_last_key) - { - if (count < REPEAT_TIMER) - { - count++; - rccode = -1; - return 1; - } - } - else - count = 0; - rc_last_key = ev.code; - switch(ev.code) - { - case KEY_UP: rccode = RC_UP; break; - case KEY_DOWN: rccode = RC_DOWN; break; - case KEY_LEFT: rccode = RC_LEFT; break; - case KEY_RIGHT: rccode = RC_RIGHT; break; - case KEY_OK: rccode = RC_OK; break; - case KEY_RED: rccode = RC_RED; break; - case KEY_GREEN: rccode = RC_GREEN; break; - case KEY_YELLOW: rccode = RC_YELLOW; break; - case KEY_BLUE: rccode = RC_BLUE; break; - case KEY_INFO: rccode = RC_HELP; break; - case KEY_MENU: rccode = RC_DBOX; break; - case KEY_EXIT: rccode = RC_HOME; break; - case KEY_POWER: rccode = RC_STANDBY; break; - default: - if( ev.code > 0x7F ) - { - rccode = 0; - if( ev.code == 0x110 ) - { - rccode = RC_ON; - } - } - else - { - rccode = rctable[ev.code & 0x7F]; - } - if( rc_last_code == RC_LSHIFT ) - { - if( ev.code <= 0x56 ) //(sizeof(rcshifttable)/sizeof(int)-1) - { - rccode = rcshifttable[ev.code]; - } - } - else if( rc_last_code == RC_ALTGR ) - { - if( ev.code <= 0x56 ) //(sizeof(rcaltgrtable)/sizeof(int)-1) - { - rccode = rcaltgrtable[ev.code]; - } - } - else if( rc_last_code == RC_ALT ) - { - if((ev.code >=2) && ( ev.code <= 11 )) - { - rccode = (ev.code-1) | 0x0200; - } - } -// if( !rccode ) - { -// rccode = -1; - } - - } - rc_last_code = rccode; - return 1; - } - else - { - rccode = -1; - rc_last_key = KEY_RESERVED; - rc_last_code = KEY_RESERVED; - } - } - - count=0; - if(read(kb, &ev, sizeof(ev)) == sizeof(ev)) - { - if(ev.value) - { - if(ev.code == rc_last_key) - { - if (count < REPEAT_TIMER) - { - count++; - rccode = -1; - return 1; - } - } - else - count = 0; - rc_last_key = ev.code; - switch(ev.code) - { - case KEY_UP: rccode = RC_UP; break; - case KEY_DOWN: rccode = RC_DOWN; break; - case KEY_LEFT: rccode = RC_LEFT; break; - case KEY_RIGHT: rccode = RC_RIGHT; break; - case KEY_OK: rccode = RC_OK; break; - case KEY_RED: rccode = RC_RED; break; - case KEY_GREEN: rccode = RC_GREEN; break; - case KEY_YELLOW: rccode = RC_YELLOW; break; - case KEY_BLUE: rccode = RC_BLUE; break; - case KEY_INFO: rccode = RC_HELP; break; - case KEY_MENU: rccode = RC_DBOX; break; - case KEY_EXIT: rccode = RC_HOME; break; - case KEY_POWER: rccode = RC_STANDBY; break; - default: - if( ev.code > 0x7F ) - { - rccode = 0; - if( ev.code == 0x110 ) - { - rccode = RC_ON; - } - } - else - { - rccode = rctable[ev.code & 0x7F]; - } - if( rc_last_code == RC_LSHIFT ) - { - if( ev.code <= 0x56 ) //(sizeof(rcshifttable)/sizeof(int)-1) - { - rccode = rcshifttable[ev.code]; - } - } - else if( rc_last_code == RC_ALTGR ) - { - if( ev.code <= 0x56 ) //(sizeof(rcaltgrtable)/sizeof(int)-1) - { - rccode = rcaltgrtable[ev.code]; - } - } - else if( rc_last_code == RC_ALT ) - { - if((ev.code >=2) && ( ev.code <= 11 )) - { - rccode = (ev.code-1) | 0x0200; - } - } -// if( !rccode ) - { -// rccode = -1; - } - - } - rc_last_code = rccode; - return 1; - } - else - { - rccode = -1; - rc_last_key = KEY_RESERVED; - rc_last_code = KEY_RESERVED; - } - } - - rccode = -1; - usleep(1000000/100); - return 0; -} - - -/****************************************************************************** - * MyFaceRequester - ******************************************************************************/ - -FT_Error MyFaceRequester(FTC_FaceID face_id, FT_Library library, FT_Pointer request_data, FT_Face *aface) -{ - FT_Error result; - - result = FT_New_Face(library, face_id, 0, aface); - - if(!result) printf("TuxCom \n", (char*)face_id); - else printf("TuxCom \n", (char*)face_id); - - return result; -} - -/****************************************************************************** - * RenderChar - ******************************************************************************/ - -int RenderChar(FT_ULong currentchar, int sx, int sy, int ex, int color) -{ - int row, pitch, bit, x = 0, y = 0; - FT_UInt glyphindex; - FT_Vector kerning; - FT_Error error; - - currentchar=currentchar & 0xFF; - - if (currentchar == '\r') // display \r in windows edited files - { - if(color != -1) - { - if (sx+10 < ex) - { - RenderBox(sx,sy-10, sx+10,sy,GRID,color); - } - else - return -1; - } - return 10; - } - //load char - - if(!(glyphindex = FT_Get_Char_Index(face, (int)currentchar))) - { - printf("TuxCom \n", (int)currentchar, error); - return 0; - } - -// no kerning used -/* - if(use_kerning) - { - FT_Get_Kerning(face, prev_glyphindex, glyphindex, ft_kerning_default, &kerning); - - prev_glyphindex = glyphindex; - kerning.x >>= 6; - } - else -*/ - kerning.x = 0; - - //render char - - if(color != -1) /* don't render char, return charwidth only */ - { - if(sx + sbit->xadvance >= ex) return -1; /* limit to maxwidth */ - - for(row = 0; row < sbit->height; row++) - { - for(pitch = 0; pitch < sbit->pitch; pitch++) - { - for(bit = 7; bit >= 0; bit--) - { - if(pitch*8 + 7-bit >= sbit->width) break; /* render needed bits only */ - - if((sbit->buffer[row * sbit->pitch + pitch]) & 1<left + kerning.x + x)*4 + fix_screeninfo.line_length*(StartY + sy - sbit->top + y),bgra[color],4); - - x++; - } - } - - x = 0; - y++; - } - - } - - //return charwidth - - return sbit->xadvance + kerning.x; -} - -/****************************************************************************** - * GetStringLen - ******************************************************************************/ - -int GetStringLen(const char *string, int size) -{ - int stringlen = 0; - - //set size - - switch (size) - { - case VERY_SMALL: desc.width = FONTHEIGHT_VERY_SMALL; desc.height = FONTHEIGHT_SMALL; break; - case SMALL : desc.width = desc.height = FONTHEIGHT_SMALL ; break; - case BIG : desc.width = FONTHEIGHT_BIG;desc.height = FONTHEIGHT_SMALL ; break; - } - - //reset kerning - - prev_glyphindex = 0; - - //calc len - - while(*string != '\0') - { - stringlen += RenderChar(*string, -1, -1, -1, -1); - string++; - } - - return stringlen; -} - -/****************************************************************************** - * RenderString - ******************************************************************************/ - -void RenderString(const char *string, int sx, int sy, int maxwidth, int layout, int size, int color) -{ - int stringlen, ex, charwidth; - - //set size - - switch (size) - { - case VERY_SMALL: desc.width =FONTHEIGHT_VERY_SMALL; desc.height = FONTHEIGHT_SMALL; break; - case SMALL : desc.width = desc.height = FONTHEIGHT_SMALL ; break; - case BIG : desc.width =FONTHEIGHT_BIG; desc.height = FONTHEIGHT_SMALL ; break; - } - - //set alignment - - if(layout != LEFT) - { - stringlen = GetStringLen(string, size); - - switch(layout) - { - case CENTER: if(stringlen < maxwidth) sx += (maxwidth - stringlen)/2; - break; - - case RIGHT: if(stringlen < maxwidth) sx += maxwidth - stringlen; - } - } - - //reset kerning - - prev_glyphindex = 0; - - //render string - - ex = sx + maxwidth; - - while(*string != '\0' && *string != '\n') - { - if((charwidth = RenderChar(*string, sx, sy, ex, color)) == -1) return; /* string > maxwidth */ - - sx += charwidth; - string++; - } -} - -/****************************************************************************** - * RenderBox - ******************************************************************************/ - -void RenderBox(int sx, int sy, int ex, int ey, int mode, int color) -{ - int loop; - int tx; - - if(mode == FILL) - { - for(; sy < ey; sy++) - { - for(tx=0; tx < (ex-sx); tx++) - { - memcpy(lbb + StartX*4 + sx*4 + (tx*4) + fix_screeninfo.line_length*(StartY + sy),bgra[color],4); - } - } - } - else - { - for(loop = sx; loop <= ex; loop++) - { - memcpy(lbb + StartX*4+loop*4 + fix_screeninfo.line_length*(sy+StartY), bgra[color], 4); - memcpy(lbb + StartX*4+loop*4 + fix_screeninfo.line_length*(sy+1+StartY), bgra[color], 4); - memcpy(lbb + StartX*4+loop*4 + fix_screeninfo.line_length*(ey-1+StartY), bgra[color], 4); - memcpy(lbb + StartX*4+loop*4 + fix_screeninfo.line_length*(ey+StartY), bgra[color], 4); - } - for(loop = sy; loop <= ey; loop++) - { - memcpy(lbb + StartX*4+sx*4 + fix_screeninfo.line_length*(loop+StartY), bgra[color], 4); - memcpy(lbb + StartX*4+(sx+1)*4 + fix_screeninfo.line_length*(loop+StartY), bgra[color], 4); - memcpy(lbb + StartX*4+(ex-1)*4 + fix_screeninfo.line_length*(loop+StartY), bgra[color], 4); - memcpy(lbb + StartX*4+ex*4 + fix_screeninfo.line_length*(loop+StartY), bgra[color], 4); - } - } -} - -void SetLanguage() -{ - if (langselect == BTN_AUTO) - { - language=LANG_INT; - if (strncmp(setlocale( LC_ALL, NULL ),"de",2) == 0) language=LANG_DE; - if (strncmp(setlocale( LC_ALL, NULL ),"it",2) == 0) language=LANG_IT; - if (strncmp(setlocale( LC_ALL, NULL ),"sv",2) == 0) language=LANG_SV; - if (strncmp(setlocale( LC_ALL, NULL ),"pt",2) == 0) language=LANG_PT; - } - else - { - switch (langselect) - { - case BTN_GERMAN : language = LANG_DE ; break; - case BTN_ITALIAN : language = LANG_IT ; break; - case BTN_SWEDISH : language = LANG_SV ; break; - case BTN_PORTUGUES: language = LANG_PT ; break; - default : language = LANG_INT; break; - } - } -} - -void read_neutrino_osd_conf(int *ex,int *sx,int *ey, int *sy) -{ - const char *filename="/var/tuxbox/config/neutrino.conf"; - const char spres[][5]={"","_crt","_lcd"}; - char sstr[4][32]; - int pres=-1, loop, *sptr[4]={ex, sx, ey, sy}; - char *buffer; - size_t len; - ssize_t read; - FILE* fd; - - fd = fopen(filename, "r"); - if(fd){ - buffer=NULL; - len = 0; - while ((read = getline(&buffer, &len, fd)) != -1){ - sscanf(buffer, "screen_preset=%d", &pres); - } - if(buffer) - free(buffer); - rewind(fd); - ++pres; - sprintf(sstr[0], "screen_EndX%s=%%d", spres[pres]); - sprintf(sstr[1], "screen_StartX%s=%%d", spres[pres]); - sprintf(sstr[2], "screen_EndY%s=%%d", spres[pres]); - sprintf(sstr[3], "screen_StartY%s=%%d", spres[pres]); - - buffer=NULL; - len = 0; - while ((read = getline(&buffer, &len, fd)) != -1){ - for(loop=0; loop<4; loop++) { - sscanf(buffer, sstr[loop], sptr[loop]); - } - } - fclose(fd); - if(buffer) - free(buffer); - } -} -/****************************************************************************** - * plugin_exec * - ******************************************************************************/ - -int main() -{ - FT_Error error; - - //show versioninfo - printf(MSG_VERSION); - char szMessage[400]; - - //get params - kb = fb = rc = sx = ex = sy = ey = -1; - - /* open Framebuffer */ - fb=open("/dev/fb/0", O_RDWR); - - /* open Remote Control */ - rc = open("/dev/input/nevis_ir", O_RDONLY); - if(rc == -1) { - perror("TuxCom "); - exit(1); - } - //init framebuffer - - if(ioctl(fb, FBIOGET_FSCREENINFO, &fix_screeninfo) == -1) - { - printf("TuxCom \n"); - return 2; - } - - if(ioctl(fb, FBIOGET_VSCREENINFO, &var_screeninfo) == -1) - { - printf("TuxCom \n"); - return 2; - } - if(!(lfb = (unsigned char*)mmap(0, fix_screeninfo.smem_len, PROT_READ | PROT_WRITE, MAP_SHARED, fb, 0))) - { - printf("TuxCom \n"); - return 2; - } - - //init fontlibrary - - if((error = FT_Init_FreeType(&library))) - { - printf("TuxCom ", error); - munmap(lfb, fix_screeninfo.smem_len); - return 2; - } - - if((error = FTC_Manager_New(library, 1, 2, 0, &MyFaceRequester, NULL, &manager))) - { - printf("TuxCom \n", error); - FT_Done_FreeType(library); - munmap(lfb, fix_screeninfo.smem_len); - return 2; - } - - if((error = FTC_SBitCache_New(manager, &cache))) - { - printf("TuxCom \n", error); - FTC_Manager_Done(manager); - FT_Done_FreeType(library); - munmap(lfb, fix_screeninfo.smem_len); - return 2; - } - - if((error = FTC_Manager_LookupFace(manager, FONT, &face))) - { - if((error = FTC_Manager_LookupFace(manager, FONT2, &face))) - { - printf("TuxCom \n", error); - FTC_Manager_Done(manager); - FT_Done_FreeType(library); - munmap(lfb, fix_screeninfo.smem_len); - return 2; - } - else - desc.face_id = FONT2; - } - else - desc.face_id = FONT; - use_kerning = FT_HAS_KERNING(face); - - desc.flags = FT_LOAD_MONOCHROME; - - //init backbuffer - - if(!(lbb = malloc(fix_screeninfo.line_length*var_screeninfo.yres))) - { - printf("TuxCom \n"); - FTC_Manager_Done(manager); - FT_Done_FreeType(library); - munmap(lfb, fix_screeninfo.smem_len); - return 2; - } - memset(lbb, 0, fix_screeninfo.line_length*var_screeninfo.yres); - printf("TuxCom init: FB %dx%dx%d stride %d\n", var_screeninfo.xres, var_screeninfo.yres, var_screeninfo.bits_per_pixel, fix_screeninfo.line_length);; - RenderBox(0,0,var_screeninfo.xres,var_screeninfo.yres,FILL,BLACK); - printf("TuxCom init: complete\n"); - - //init data - curframe = 0; - cursort = SORT_UP; - curvisibility = 0; - singleview = 0; - textuppercase = 0; - screenmode=0; - filesize_in_byte = BTN_NO; // show human readable filesize - langselect = BTN_AUTO; // automatic - autosave = BTN_ASK; // ask on exit - - commandsize =sysconf(_SC_ARG_MAX )-100; - szClipboard[0] = 0x00; - szSearchstring[0] = 0x00; - szTextSearchstring[0] = 0x00; - memset(tool, ACTION_NOACTION, sizeof(tool)); - colortool[0] = ACTION_EXEC ; - colortool[1] = ACTION_MARKER ; - colortool[2] = ACTION_SORT ; - colortool[3] = ACTION_REFRESH; - - memset(&finfo[0], 0, sizeof(finfo[0])); - memset(&finfo[1], 0, sizeof(finfo[0])); - - read_neutrino_osd_conf(&ex,&sx,&ey, &sy); - if((ex == -1) || (sx == -1) || (ey == -1) || (sy == -1)){ - sx = 40; - ex = var_screeninfo.xres - 40; - sy = 40; - ey = var_screeninfo.yres - 40; - } - // center output on screen - StartX = sx; - StartY = sy; - viewx = ex - sx; - viewy = ey - sy; - menuitemwidth = viewx / MENUITEMS; - menuitemnumber = viewx / (MENUITEMS*6); - - framerows = (viewy-MENUSIZE - 3*BORDERSIZE - FONTHEIGHT_SMALL) / FONTHEIGHT_SMALL; - - FrameWidth = viewx/2; - NameWidth = (FrameWidth / 3 ) * 2; - SizeWidth = (FrameWidth / 3 ) - 3* BORDERSIZE; - - - ReadSettings(); - - SetLanguage(); - - // ioctl(saa, SAAIOGWSS, &saa_old); - // ioctl(saa, SAAIOSWSS, &saamodes[screenmode]); - // setup screen - RenderFrame(LEFTFRAME); - RenderFrame(RIGHTFRAME); - memcpy(lfb, lbb, fix_screeninfo.line_length*var_screeninfo.yres); - printf("TuxCom init successful\n"); - // lock keyboard-conversions, this is done by the plugin itself - fclose(fopen(KBLCKFILE,"w")); - - // fcntl(rc, F_SETFL, fcntl(rc, F_GETFL) &~ O_NONBLOCK); - - int dosave = autosave; - int firstentry = 1; - struct fileentry *pfe; - char action[256]; - char szSel [256]; - int pos, check; - do{ - overwriteall = 0; - skipall = 0; - GetRCCode(RC_NORMAL); - - // hack to ignore the first OK press (from starting the plugin) - if (firstentry == 1) - { - if (rccode == RC_OK) continue; - - // check password - if (szPass[0] != 0x00) - { - char szP[20]; - *szP = 0x00; - if (GetInputString(250,19,szP,info[INFO_PASS1*NUM_LANG+language], YES) != RC_OK) break; - if (strcmp(szP,szPass) != 0) break; - RenderFrame(LEFTFRAME); - RenderFrame(RIGHTFRAME); - memcpy(lfb, lbb, fix_screeninfo.line_length*var_screeninfo.yres); - } - } - firstentry = 0; - - switch(rccode) - { - case RC_HELP: - singleview = 1-singleview; - break; - case RC_OK: - pfe = GetSelected(curframe); - if (pfe && (S_ISDIR(pfe->fentry.st_mode) || (finfo[curframe].zipfile[0] != 0x00 && S_ISLNK(pfe->fentry.st_mode)))) - { - if (strcmp(pfe->name,"..") == 0) - { - ClearMarker(curframe); - FillDir(curframe,SELECT_UPDIR); - } - else if (strcmp(pfe->name,"/") == 0) - { - ClearMarker(curframe); - FillDir(curframe,SELECT_ROOTDIR); - } - else - { - if (finfo[curframe].zipfile[0] != 0x00) - { - strncat(finfo[curframe].zippath,pfe->name,256); - strncat(finfo[curframe].zippath,"/",1); - } - else - { - strncat(finfo[curframe].path,pfe->name,256); - strncat(finfo[curframe].path,"/",1); - } - finfo[curframe].selected =1; - finfo[curframe].first =0; - ClearMarker(curframe); - FillDir(curframe,SELECT_NOCHANGE); - } - break; - } - if (pfe && S_ISLNK(pfe->fentry.st_mode)) - { - struct stat fs; - char fullfile[FILENAME_MAX]; - sprintf(fullfile,"%s%s",finfo[curframe].path,pfe->name); - stat(fullfile,&fs); - if (S_ISDIR(fs.st_mode)) - { - strncat(finfo[curframe].path,pfe->name,256); - strncat(finfo[curframe].path,"/",1); - finfo[curframe].selected =0; - finfo[curframe].first =0; - ClearMarker(curframe); - FillDir(curframe,SELECT_NOCHANGE); - } - else - { - if (pfe && ((pfe->fentry.st_mode & S_IXUSR) == S_IXUSR)) - { - sprintf(szMessage,msg[MSG_EXEC*NUM_LANG+language], pfe->name); - switch (MessageBox(szMessage,info[INFO_EXEC*NUM_LANG+language],OKHIDDENCANCEL)) - { - case YES: - sprintf(action,"\"%s%s\"",finfo[curframe].path, pfe->name); - DoExecute(action, SHOW_OUTPUT); - FillDir(1-curframe,SELECT_NOCHANGE); - FillDir( curframe,SELECT_NOCHANGE); - break; - case HIDDEN: - sprintf(action,"\"%s%s\" &",finfo[curframe].path, pfe->name); - DoExecute(action, SHOW_NO_OUTPUT); - break; - default: - rccode = 0; - } - } - } - - } - if (pfe && ((pfe->fentry.st_mode & S_IRUSR) == S_IRUSR)) - { - if (((check = CheckZip(pfe->name))>= GZIP) && (finfo[curframe].zipfile[0] == 0x00)) - { - ReadZip(check); - FillDir(curframe,SELECT_NOCHANGE); - SetSelected(curframe,".."); - break; - } - else - { - char scriptfile[FILENAME_MAX]; - char* expos = strrchr(pfe->name,'.'); - if (expos && strlen(expos) > 0) - { - struct stat st; - sprintf(scriptfile,"%s%s%s","/var/tuxbox/config/", "/tuxcom/",expos+1); - if (lstat(scriptfile,&st) != -1) - { - char szCmd[4000]; - sprintf(szCmd,"%s \"%s\" \"%s\" &", scriptfile,finfo[curframe].path, pfe->name); - DoExecute(szCmd,SHOW_NO_OUTPUT); - break; - } - } - } - - - } - if (pfe && ((pfe->fentry.st_mode & S_IXUSR) == 0) && finfo[curframe].zipfile[0] == 0x00) - { - RenderMenuLine(ACTION_VIEW-1, YES); - DoViewFile(); - } - if (pfe && ((pfe->fentry.st_mode & S_IXUSR) == S_IXUSR) && finfo[curframe].zipfile[0] == 0x00) - { - sprintf(szMessage,msg[MSG_EXEC*NUM_LANG+language], pfe->name); - switch (MessageBox(szMessage,info[INFO_EXEC*NUM_LANG+language],OKHIDDENCANCEL)) - { - case YES: - sprintf(action,"\"%s%s\"",finfo[curframe].path, pfe->name); - DoExecute(action, SHOW_OUTPUT); - FillDir(1-curframe,SELECT_NOCHANGE); - FillDir( curframe,SELECT_NOCHANGE); - break; - case HIDDEN: - sprintf(action,"\"%s%s\" &",finfo[curframe].path, pfe->name); - DoExecute(action, SHOW_NO_OUTPUT); - break; - default: - rccode = 0; - } - } - break; - case RC_LEFT: - curframe = LEFTFRAME; - break; - case RC_RIGHT: - curframe = RIGHTFRAME; - break; - case RC_UP: - finfo[curframe].selected--; - if (finfo[curframe].selected < 0) - finfo[curframe].selected = finfo[curframe].count -1; - break; - case RC_DOWN: - finfo[curframe].selected++; - if (finfo[curframe].selected >= finfo[curframe].count) - finfo[curframe].selected = 0; - break; - case RC_PLUS: - finfo[curframe].selected-= framerows; - break; - case RC_MINUS: - finfo[curframe].selected+= framerows; - break; - case RC_1: - if (tool[ACTION_PROPS-1] == ACTION_PROPS) - { - RenderMenuLine(ACTION_PROPS-1, YES); - if (ShowProperties() == YES) - { - FillDir(1-curframe,SELECT_NOCHANGE); - FillDir( curframe,SELECT_NOCHANGE); - } - } - break; - case RC_2: - if (tool[ACTION_RENAME-1] == ACTION_RENAME) - { - RenderMenuLine(ACTION_RENAME-1, YES); - pfe = GetSelected(curframe); - char szBuf[256]; - char szMsg[356]; - strcpy(szBuf,pfe->name); - sprintf(szMsg,msg[MSG_RENAME*NUM_LANG+language], pfe->name); - int nok = 0; - while (nok == 0) - { - switch (GetInputString(400,255,szBuf,szMsg, NO)) - { - case RC_OK: - { - if (*szBuf == 0x00) - { - nok = 1; - break; - } - if (FindFile(curframe,szBuf) != NULL) - { - char szMsg2[356]; - sprintf(szMsg2,msg[MSG_FILE_EXISTS*NUM_LANG+language], szBuf); - MessageBox(szMsg2,"",OK); - break; - } - else - { - char szOld[FILENAME_MAX],szNew[FILENAME_MAX]; - sprintf(szOld,"%s%s",finfo[curframe].path, pfe->name); - sprintf(szNew,"%s%s",finfo[curframe].path, szBuf ); - rename(szOld,szNew); - RenameMarker(curframe,pfe->name,szBuf); - if (strcmp(finfo[curframe].path,finfo[1-curframe].path) == 0) - RenameMarker(1-curframe,pfe->name,szBuf); - FillDir(1-curframe,SELECT_NOCHANGE); - FillDir( curframe,SELECT_NOCHANGE); - SetSelected(curframe,szBuf); - if (strcmp(finfo[curframe].path,finfo[1-curframe].path) == 0) - SetSelected(1-curframe,szBuf); - - nok = 1; - } - } - default: - rccode = 0; - nok = 1; - } - break; - } - } - break; - case RC_3: - if (tool[ACTION_VIEW-1] == ACTION_VIEW) - { - RenderMenuLine(ACTION_VIEW-1, YES); - DoViewFile(); - } - break; - case RC_4: - if (tool[ACTION_EDIT-1] == ACTION_EDIT) - { - pfe = GetSelected(curframe); - sprintf(action,"%s%s",finfo[curframe].path, pfe->name); - if (CheckZip(pfe->name) == FTP) - { - colortool[0] = ACTION_NOACTION; - colortool[1] = ACTION_NOACTION; - colortool[2] = ACTION_NOACTION; - colortool[3] = ACTION_NOACTION; - RenderMenuLine(ACTION_EDIT-1, YES); - DoEditFTP(action, pfe->name); - } - else - { - colortool[0] = ACTION_DELLINE ; - colortool[1] = ACTION_INSLINE ; - colortool[2] = ACTION_NOACTION; - colortool[3] = ACTION_TOLINUX ; - RenderMenuLine(-1, EDITOR); - DoEditFile(action, action, YES); - } - FillDir(1-curframe,SELECT_NOCHANGE); - FillDir( curframe,SELECT_NOCHANGE); - } - break; - case RC_5: - if (tool[ACTION_COPY-1] == ACTION_COPY) - { - tmpzipdir[0] = 0x00; - char* szZipCommand = (char*)malloc(commandsize); - szZipCommand[0] = 0x00; - RenderMenuLine(ACTION_COPY-1, YES); - pfe = GetSelected(curframe); - if ((finfo[curframe].zipfile[0] == 0x00) && (strcmp(finfo[curframe].path, finfo[1-curframe].path) == 0)) - { - MessageBox(msg[MSG_COPY_NOT_POSSIBLE*NUM_LANG+language],"",OK); - } - else - { - if (finfo[curframe].markcount > 0) - { - sprintf(szMessage,msg[MSG_COPY_MULTI*NUM_LANG+language], finfo[curframe].markcount, finfo[1-curframe].path); - switch (MessageBox(szMessage,(finfo[curframe].zipfile[0] == 0x00 ? info[INFO_COPY*NUM_LANG+language] :""),(finfo[curframe].zipfile[0] == 0x00 ? OKHIDDENCANCEL: OKCANCEL ))) - { - case YES: - for (pos = 0; pos < finfo[curframe].count; pos++) - { - if (IsMarked(curframe,pos)) - { - pfe = getfileentry(curframe, pos); - if (DoCopy(pfe,YES, OVERWRITESKIPCANCEL,szZipCommand) < 0) break; - } - } - DoZipCopyEnd(szZipCommand); - FillDir(1-curframe,SELECT_NOCHANGE); - FillDir( curframe,SELECT_NOCHANGE); - break; - case HIDDEN: - for (pos = 0; pos < finfo[curframe].count; pos++) - { - if (IsMarked(curframe,pos)) - { - pfe = getfileentry(curframe, pos); - if (DoCopy(pfe,HIDDEN, OVERWRITESKIPCANCEL,szZipCommand) < 0) break; - } - } - break; - default: - rccode = 0; - } - } - else - { - sprintf(szMessage,msg[MSG_COPY*NUM_LANG+language], pfe->name, finfo[1-curframe].path); - switch (MessageBox(szMessage,(finfo[curframe].zipfile[0] == 0x00 ? info[INFO_COPY*NUM_LANG+language]:""),(finfo[curframe].zipfile[0] == 0x00 ? OKHIDDENCANCEL : OKCANCEL ))) - { - case YES: - if (DoCopy(pfe,YES, OVERWRITECANCEL,szZipCommand) < 0) break; - DoZipCopyEnd(szZipCommand); - FillDir(1-curframe,SELECT_NOCHANGE); - FillDir( curframe,SELECT_NOCHANGE); - break; - case HIDDEN: - DoCopy(pfe,HIDDEN, OVERWRITECANCEL,szZipCommand); - break; - default: - rccode = 0; - } - } - } - free(szZipCommand); - } - break; - case RC_6: - if (tool[ACTION_MOVE-1] == ACTION_MOVE) - { - RenderMenuLine(ACTION_MOVE-1, YES); - pfe = GetSelected(curframe); - if (finfo[curframe].markcount > 0) - { - sprintf(szMessage,msg[MSG_MOVE_MULTI*NUM_LANG+language], finfo[curframe].markcount, finfo[1-curframe].path); - switch (MessageBox(szMessage,info[INFO_MOVE*NUM_LANG+language],OKHIDDENCANCEL)) - { - case YES: - for (pos = 0; pos < finfo[curframe].count; pos++) - { - if (IsMarked(curframe,pos)) - { - pfe = getfileentry(curframe, pos); - if (DoMove(pfe, YES, OVERWRITESKIPCANCEL) < 0) break; - } - } - ClearMarker(curframe); - FillDir(1-curframe,SELECT_NOCHANGE); - FillDir( curframe,SELECT_NOCHANGE); - break; - case HIDDEN: - for (pos = 0; pos < finfo[curframe].count; pos++) - { - if (IsMarked(curframe,pos)) - { - pfe = getfileentry(curframe, pos); - if (DoMove(pfe, HIDDEN, OVERWRITESKIPCANCEL) < 0) break; - } - } - ClearMarker(curframe); - break; - default: - rccode = 0; - } - } - else - { - sprintf(szMessage,msg[MSG_MOVE*NUM_LANG+language], pfe->name, finfo[1-curframe].path); - switch (MessageBox(szMessage,info[INFO_MOVE*NUM_LANG+language],OKHIDDENCANCEL)) - { - case YES: - if (DoMove(pfe,YES,OVERWRITECANCEL) < 0) break; - FillDir(1-curframe,SELECT_NOCHANGE); - FillDir( curframe,SELECT_NOCHANGE); - break; - case HIDDEN: - DoMove(pfe,HIDDEN,OVERWRITECANCEL); - break; - default: - rccode = 0; - } - } - } - break; - case RC_7: - if (tool[ACTION_MKDIR-1] == ACTION_MKDIR) - { - RenderMenuLine(ACTION_MKDIR-1, YES); - char szDir[FILENAME_MAX]; - szDir[0] = 0x00; - char szMsg[1000]; - sprintf(szMsg,msg[MSG_MKDIR*NUM_LANG+language],finfo[curframe].path); - switch (GetInputString(400,255,szDir,szMsg, NO)) - { - case RC_OK: - { - if (*szDir != 0x00) - { - if (FindFile(curframe,szDir) != NULL) - { - sprintf(szMsg,msg[MSG_FILE_EXISTS*NUM_LANG+language],szDir); - MessageBox(szMsg,"",OK); - } - else - { - sprintf(action,"mkdir -p \"%s%s\"",finfo[curframe].path, szDir); - DoExecute(action, SHOW_NO_OUTPUT); - FillDir(1-curframe,SELECT_NOCHANGE); - FillDir( curframe,SELECT_NOCHANGE); - SetSelected(curframe,szDir); - } - } - } - default: - rccode = 0; - } - } - break; - case RC_8: - if (tool[ACTION_DELETE-1] == ACTION_DELETE) - { - RenderMenuLine(ACTION_DELETE-1, YES); - pfe = GetSelected(curframe); - if (finfo[curframe].markcount > 0) - { - sprintf(szMessage,msg[MSG_DELETE_MULTI*NUM_LANG+language], finfo[curframe].markcount); - if (MessageBox(szMessage,"",OKCANCEL) == YES) - { - for (pos = 0; pos < finfo[curframe].count; pos++) - { - if (IsMarked(curframe,pos)) - { - pfe = getfileentry(curframe, pos); - sprintf(szMessage,msg[MSG_DELETE_PROGRESS*NUM_LANG+language], pfe->name); - MessageBox(szMessage,"",NOBUTTON); - sprintf(action,"rm -f -r \"%s%s\"",finfo[curframe].path,pfe->name); - DoExecute(action, SHOW_NO_OUTPUT); - } - } - ClearMarker(curframe); - FillDir(1-curframe,SELECT_NOCHANGE); - FillDir( curframe,SELECT_NOCHANGE); - } - } - else - { - sprintf(szMessage,msg[MSG_DELETE*NUM_LANG+language], pfe->name); - if (MessageBox(szMessage,"",OKCANCEL) == YES) - { - sprintf(szMessage,msg[MSG_DELETE_PROGRESS*NUM_LANG+language], pfe->name); - MessageBox(szMessage,"",NOBUTTON); - sprintf(action,"rm -f -r \"%s%s\"",finfo[curframe].path,pfe->name); - DoExecute(action, SHOW_NO_OUTPUT); - FillDir(1-curframe,SELECT_NOCHANGE); - FillDir( curframe,SELECT_NOCHANGE); - } - } - rccode = 0; - } - break; - case RC_9: - if (tool[ACTION_MKFILE-1] == ACTION_MKFILE) - { - RenderMenuLine(ACTION_MKFILE-1, YES); - char szDir[FILENAME_MAX]; - szDir[0] = 0x00; - char szMsg[356]; - sprintf(szMsg,msg[MSG_MKFILE*NUM_LANG+language], finfo[curframe].path); - switch (GetInputString(400,255,szDir,szMsg, NO)) - { - case RC_OK: - { - if (*szDir != 0x00) - { - sprintf(action,"touch \"%s%s\"",finfo[curframe].path, szDir); - DoExecute(action, SHOW_NO_OUTPUT); - FillDir(1-curframe,SELECT_NOCHANGE); - FillDir( curframe,SELECT_NOCHANGE); - SetSelected(curframe,szDir); - } - } - default: - rccode = 0; - } - } - break; - case RC_0: - if (tool[ACTION_MKLINK-1] == ACTION_MKLINK) - { - RenderMenuLine(ACTION_MKLINK-1, YES); - char szDir[FILENAME_MAX]; - pfe = GetSelected(curframe); - strcpy(szDir,pfe->name); - char szMsg[356]; - sprintf(szMsg,msg[MSG_MKLINK*NUM_LANG+language], finfo[curframe].path, pfe->name, finfo[1-curframe].path); - switch (GetInputString(400,255,szDir,szMsg, NO)) - { - case RC_OK: - { - if (*szDir != 0x00) - { - sprintf(action,"ln -s \"%s%s\" \"%s%s\"",finfo[curframe].path, pfe->name,finfo[1-curframe].path, szDir); - DoExecute(action, SHOW_NO_OUTPUT); - FillDir(1-curframe,SELECT_NOCHANGE); - FillDir( curframe,SELECT_NOCHANGE); - } - } - default: - rccode = 0; - } - } - break; - case RC_RED: - { - char szMsg[356]; - sprintf(szMsg,msg[MSG_COMMAND*NUM_LANG+language]); - char* szCommand = (char*)malloc(commandsize); - szCommand [0]= 0x00; - switch (GetInputString(400,commandsize,szCommand,szMsg, NO)) - { - case RC_OK: - DoExecute(szCommand, SHOW_OUTPUT); - FillDir(1-curframe,SELECT_NOCHANGE); - FillDir( curframe,SELECT_NOCHANGE); - break; - default: - rccode = 0; - } - free (szCommand); - } - break; - case RC_GREEN: // toggle marker - ToggleMarker(curframe); - finfo[curframe].selected++; - break; - case RC_YELLOW: - cursort = finfo[curframe].sort = finfo[curframe].sort * -1; - strcpy(szSel,GetSelected(curframe)->name); - sortframe(curframe, szSel); - break; - case RC_BLUE: // Refresh - FillDir(1-curframe,SELECT_NOCHANGE); - FillDir( curframe,SELECT_NOCHANGE); - break; - case RC_MUTE: // toggle visibility - curvisibility++; - if (curvisibility > 2) curvisibility = 0; - break; - case RC_DBOX: // main menu - DoMainMenu(); - break; - case RC_HOME: - if (autosave == BTN_ASK) - { - switch (MessageBox(msg[MSG_SAVESETTINGS*NUM_LANG+language],"",YESNOCANCEL)) - { - case YES: - dosave = BTN_YES; - while (GetRCCode(RC_NORMAL) == 0); - rccode = RC_HOME; - break; - case NO: - dosave = BTN_NO; - while (GetRCCode(RC_NORMAL) == 0); - rccode = RC_HOME; - break; - case CANCEL: - dosave = BTN_NO; - rccode = -1; - break; - } - } - break; - - default: - continue; - } - if (finfo[curframe].selected < 0) - finfo[curframe].selected = 0; - if (finfo[curframe].selected >= finfo[curframe].count) - finfo[curframe].selected = finfo[curframe].count -1; - if (finfo[curframe].first > finfo[curframe].selected) - finfo[curframe].first = finfo[curframe].selected; - if (finfo[curframe].selected >= finfo[curframe].first + framerows) - finfo[curframe].first = finfo[curframe].selected - framerows+1; - RenderFrame(LEFTFRAME); - RenderFrame(RIGHTFRAME); - memcpy(lfb, lbb, fix_screeninfo.line_length*var_screeninfo.yres); - - }while(rccode != RC_HOME); - - if (dosave == BTN_YES) - WriteSettings(); - - system("rm -f /tmp/tuxcom.out"); - rccode = -1; - FTC_Manager_Done(manager); - FT_Done_FreeType(library); - - free(lbb); - munmap(lfb, fix_screeninfo.smem_len); - - // enable keyboard-conversion again - unlink(KBLCKFILE); - - //restore videoformat - // ioctl(avs, AVSIOSSCARTPIN8, &fnc_old); - // ioctl(saa, SAAIOSWSS, &saa_old); - // close(avs); - // close(saa); - - // fcntl(rc, F_SETFL, O_NONBLOCK); - close(rc); - close(kb); - - ClearEntries (LEFTFRAME ); - ClearEntries (RIGHTFRAME); - ClearMarker (LEFTFRAME ); - ClearMarker (RIGHTFRAME); - ClearZipEntries(LEFTFRAME ); - ClearZipEntries(RIGHTFRAME); - return 0; -} - -/****************************************************************************** - * RenderMenuLine * - ******************************************************************************/ - -void RenderMenuLine(int highlight, int refresh) -{ - char szEntry[20]; - int i,j; - RenderBox(menuitemwidth * MENUITEMS ,viewy-MENUSIZE, viewx, viewy-MENUSIZE / 2 , FILL, (highlight == MENUITEMS-1 ? GREEN : BLUE2) ); - for (i = 0; i < MENUITEMS; i++) - { - RenderBox(menuitemwidth * i ,viewy-MENUSIZE, menuitemwidth *(i+1) , viewy-MENUSIZE / 2 , FILL, (i == highlight ? GREEN : BLUE2) ); - RenderBox(menuitemwidth * i ,viewy-MENUSIZE, menuitemwidth * i + menuitemnumber , viewy-MENUSIZE / 2 , FILL, BLUE1); - - sprintf(szEntry,"%d",(i+1)%MENUITEMS); - RenderString(szEntry , menuitemwidth * i +1 , viewy-(MENUSIZE/2 + FONT_OFFSET_BIG) , menuitemnumber , CENTER, SMALL, WHITE); - if (refresh == EDIT) - { - if (textuppercase == 0) - RenderString(numberchars[(i+1)%10], menuitemwidth * i + menuitemnumber, viewy-(MENUSIZE/2 + FONT_OFFSET_BIG) , menuitemwidth-menuitemnumber, CENTER, SMALL, WHITE); - else - { - strcpy(szEntry,numberchars[(i+1)%10]); - for (j = 0; j < strlen(szEntry); j++) szEntry[j] = toupper(szEntry[j]); - RenderString(szEntry, menuitemwidth * i + menuitemnumber, viewy-(MENUSIZE/2 + FONT_OFFSET_BIG) , menuitemwidth-menuitemnumber, CENTER, SMALL, WHITE); - } - - } - else if (refresh == EDITOR) - RenderString(editorline[tool[i]*NUM_LANG+language], menuitemwidth * i + menuitemnumber, viewy-(MENUSIZE/2 + FONT_OFFSET_BIG) , menuitemwidth-menuitemnumber, CENTER, SMALL, WHITE); - else - RenderString(menuline[tool[i]*NUM_LANG+language], menuitemwidth * i + menuitemnumber, viewy-(MENUSIZE/2 + FONT_OFFSET_BIG) , menuitemwidth-menuitemnumber, CENTER, SMALL, WHITE); - - - } - RenderBox( viewx-COLORBUTTONS ,viewy-MENUSIZE/2, viewx , viewy , FILL, BLUE1); - RenderBox( 0,viewy- MENUSIZE , viewx , viewy-MENUSIZE / 2 , GRID, WHITE); - - for (i = 0; i < COLORBUTTONS; i++) - { - - RenderBox( (viewx/COLORBUTTONS) *i ,viewy-MENUSIZE/2, (viewx/COLORBUTTONS) *(i+1) , viewy , FILL, (i == 0 ? RED : - (i == 1 ? GREEN : - (i == 2 ? YELLOW : BLUE1)))); - RenderBox( (viewx/COLORBUTTONS) *i ,viewy-MENUSIZE/2, (i < COLORBUTTONS-1 ? (viewx/COLORBUTTONS) *(i+1) : viewx) , viewy , GRID, WHITE ); - RenderString(colorline[colortool[i]*NUM_LANG+language], (viewx/COLORBUTTONS) *i , viewy- FONT_OFFSET_BIG , viewx/COLORBUTTONS, CENTER, SMALL , (i == 2 ? BLACK : WHITE)); - } - if (refresh == YES) - memcpy(lfb, lbb, fix_screeninfo.line_length*var_screeninfo.yres); - -} - - -/****************************************************************************** - * RenderFrame * - ******************************************************************************/ - -void RenderFrame(int frame) -{ - if (singleview && curframe != frame) - return; - - int row = 0; - int bcolor, fcolor; - char sizeString[100]; - short bselected; - struct fileentry* pfe; - - - int nBackColor; - - colortool[0] = ACTION_EXEC ; - colortool[1] = ACTION_MARKER ; - colortool[2] = ACTION_SORT ; - colortool[3] = ACTION_REFRESH; - - if (curvisibility == 0) - nBackColor = (finfo[frame].writable ? BLUE1: BLACK ); - else - nBackColor = trans_map[curvisibility]; - - if (curframe == frame) - { - memset(tool, ACTION_NOACTION, sizeof(tool)); - } - - if (curframe == frame) - { - if (finfo[frame].writable) - { - tool[ACTION_MKDIR-1 ] = ACTION_MKDIR; // mkdir allowed - tool[ACTION_MKFILE-1] = ACTION_MKFILE; // mkfile allowed - } - } - while (row < framerows && (finfo[frame].first + row < finfo[frame].count)) - { - bselected = ((finfo[frame].first + row == finfo[frame].selected) && (curframe == frame)); - bcolor = (bselected ? (IsMarked(frame,finfo[frame].first + row) ? BLUE3 : BLUE2) - : (IsMarked(frame,finfo[frame].first + row) ? trans_map_mark[curvisibility] : nBackColor)); - pfe = getfileentry(frame, finfo[frame].first + row); - if (bselected && strcmp(pfe->name,"..") != 0 && strcmp(pfe->name,"/") != 0) - { - tool[ACTION_PROPS-1] = ACTION_PROPS; // view properties allowed if entry is not .. or / - if (finfo[1-frame].writable && finfo[frame].zipfile[0] == 0x00) - tool[ACTION_MKLINK-1] = ACTION_MKLINK; // mklink allowed - } - *sizeString = 0x00; - fcolor = WHITE; - if ((pfe->fentry.st_mode & S_IRUSR) == S_IRUSR ) - { - fcolor = GREEN2 ; - if (bselected) - { - tool[ACTION_COPY-1] = (finfo[1-frame].writable ? ACTION_COPY : ACTION_NOACTION); // copy allowed, if other frame writable; - tool[ACTION_VIEW-1] = (finfo[frame].ftpconn != NULL ? ACTION_NOACTION : ACTION_VIEW); // view allowed, if not in FTP-Connection - } - } - if ((pfe->fentry.st_mode & S_IWUSR) == S_IWUSR ) - { - fcolor = GRAY ; - if (bselected) - { - tool[ACTION_MOVE-1] = (finfo[1-frame].writable && finfo[frame].writable ? ACTION_MOVE : ACTION_NOACTION); // move allowed, if both frames writable; - tool[ACTION_DELETE-1] = (finfo[ frame].writable ? ACTION_DELETE : ACTION_NOACTION); // delete allowed, if current frame writable - tool[ACTION_RENAME-1] = (finfo[ frame].writable ? ACTION_RENAME : ACTION_NOACTION); // rename allowed, if current frame writable - tool[ACTION_EDIT-1] = ((pfe->fentry.st_size < FILEBUFFER_SIZE) && finfo[frame].writable ? ACTION_EDIT : ACTION_NOACTION); // edit allowed, if size of current file < FILEBUFFER_SIZE; - } - } - if ((pfe->fentry.st_mode & S_IXUSR) == S_IXUSR ) - { - fcolor = YELLOW ; - } - if (S_ISDIR(pfe->fentry.st_mode)) - { - fcolor = WHITE ; - sprintf(sizeString,""); - if (bselected) - { - tool[ACTION_VIEW-1] = ACTION_NOACTION; // view not allowed - tool[ACTION_EDIT-1] = ACTION_NOACTION; // edit not allowed - } - } - else if (S_ISLNK(pfe->fentry.st_mode)) - { - fcolor = ORANGE ; - sprintf(sizeString,""); - if (bselected) - tool[ACTION_VIEW-1] = ACTION_NOACTION; // view not allowed - } - else - { - GetSizeString(sizeString,pfe->fentry.st_size,0); - } - if (bselected) - { - if (finfo[frame].markcount > 0) // files marked in current frame - { - tool[ACTION_COPY -1] = (finfo[1-frame].writable ? ACTION_COPY : ACTION_NOACTION); // copy allowed, if other frame writable; - tool[ACTION_MOVE -1] = (finfo[1-frame].writable && finfo[frame].writable ? ACTION_MOVE : ACTION_NOACTION); // move allowed, if both frames writable; - tool[ACTION_DELETE-1] = (finfo[ frame].writable ? ACTION_DELETE : ACTION_NOACTION); // delete allowed, if current frame writable - } - RenderMenuLine(-1, NO); - } - - PosY = (row+1) * FONTHEIGHT_SMALL + BORDERSIZE ; - PosX = (singleview ? 0 : frame * FrameWidth) + BORDERSIZE; - - RenderBox(PosX, PosY-FONTHEIGHT_SMALL,((1+frame+singleview)*FrameWidth), PosY, FILL, bcolor); - RenderString(pfe->name, PosX+2, PosY-FONT_OFFSET, NameWidth*(1+(singleview*1.4))-2, LEFT, SMALL,fcolor); - RenderString(sizeString, (singleview ? 2 :1+frame)*FrameWidth -2*BORDERSIZE - 2*SizeWidth*(1+singleview), PosY-FONT_OFFSET, 2*SizeWidth*(1+singleview), RIGHT, SMALL,fcolor); - row++; - } - // fill empty rows - RenderBox(PosX, PosY,((1+frame+singleview)*FrameWidth), PosY+ FONTHEIGHT_SMALL*(framerows-row+1) , FILL, nBackColor); - - // draw Rectangle - - // left border - RenderBox((singleview ? 0 : frame) *FrameWidth , 0 ,(singleview ? 0 : frame)*FrameWidth +BORDERSIZE, viewy-MENUSIZE , FILL, (curframe == frame ? WHITE : BLUE2)); - // right border - RenderBox((singleview ? 2 :1+frame) *FrameWidth -BORDERSIZE , 0 ,(singleview ? 2 : 1+frame)*FrameWidth , viewy-MENUSIZE , FILL, (curframe == frame ? WHITE : BLUE2)); - // top border - RenderBox((singleview ? 0 : frame) *FrameWidth , 0 ,(singleview ? 2 : 1+frame)*FrameWidth , BORDERSIZE , FILL, (curframe == frame ? WHITE : BLUE2)); - // line between list and Info Line - RenderBox((singleview ? 0 : frame) *FrameWidth , viewy-2*BORDERSIZE-FONTHEIGHT_SMALL - MENUSIZE, (singleview ? 2 : 1+frame)*FrameWidth , viewy-BORDERSIZE-FONTHEIGHT_SMALL - MENUSIZE, FILL, (curframe == frame ? WHITE : BLUE2)); - // line between name and size - RenderBox((singleview ? 0 : frame) *FrameWidth +NameWidth*(1+(singleview*1.4)), 0 ,(singleview ? 0 : frame)*FrameWidth+NameWidth*(1+(singleview*1.4))+BORDERSIZE, viewy-BORDERSIZE-FONTHEIGHT_SMALL - MENUSIZE, FILL, (curframe == frame ? WHITE : BLUE2)); - // bottom border - RenderBox((singleview ? 0 : frame) *FrameWidth , viewy-BORDERSIZE - MENUSIZE ,(singleview ? 2 : 1+frame)*FrameWidth , viewy-MENUSIZE , FILL, (curframe == frame ? WHITE : BLUE2)); - - // Info line - RenderBox(PosX , viewy-BORDERSIZE-FONTHEIGHT_SMALL-MENUSIZE, PosX+FrameWidth*(1+singleview)-2*BORDERSIZE, viewy-BORDERSIZE-MENUSIZE, FILL, BLACK); - if (finfo[frame].markcount > 0) - { - sprintf(sizeString,info[INFO_MARKER*NUM_LANG+language],finfo[frame].markcount); - RenderString(sizeString, PosX+2, viewy-BORDERSIZE-FONT_OFFSET-MENUSIZE , NameWidth*(1+singleview)-2, LEFT, SMALL,(curframe == frame ? WHITE : BLUE2)); - GetSizeString(sizeString,finfo[frame].marksize,0); - } - else - { - RenderString(finfo[frame].zipfile[0] != 0x00 ? finfo[frame].zipfile : finfo[frame].path, PosX+2, viewy-BORDERSIZE-FONT_OFFSET-MENUSIZE , NameWidth*(1+singleview)-2, LEFT, SMALL,(curframe == frame ? WHITE : BLUE2)); - GetSizeString(sizeString,finfo[frame].size,0); - } - RenderString(sizeString, (singleview ? 2 : 1+frame)*FrameWidth -BORDERSIZE - 2*SizeWidth, viewy-BORDERSIZE-FONT_OFFSET-MENUSIZE , 2*SizeWidth, RIGHT, SMALL,(curframe == frame ? WHITE : BLUE2)); -} - -/****************************************************************************** - * MessageBox * - ******************************************************************************/ - -int MessageBox(const char* msg1, const char* msg2, int mode) -{ - - int sel = 0, le1=0, le2=0 , wi, he, maxsel=0; - int ps[5]; - - switch (mode) - { - case OKCANCEL: - ps[0] = YES; - ps[1] = CANCEL; - ps[2] = 0; - ps[3] = 0; - ps[4] = 0; - sel = 1; - maxsel = 1; - break; - case OKHIDDENCANCEL: - ps[0] = YES; - ps[1] = CANCEL; - ps[2] = HIDDEN; - ps[3] = 0; - ps[4] = 0; - sel = 1; - maxsel = 2; - break; - case YESNOCANCEL: - ps[0] = YES; - ps[1] = CANCEL; - ps[2] = NO; - ps[3] = 0; - ps[4] = 0; - sel = 1; - maxsel = 2; - break; - case OVERWRITECANCEL: - ps[0] = OVERWRITE; - ps[1] = CANCEL; - ps[2] = RENAME; - ps[3] = 0; - ps[4] = 0; - sel = 1; - maxsel = 2; - break; - case OVERWRITESKIPCANCEL: - ps[0] = OVERWRITE; - ps[1] = CANCEL; - ps[2] = SKIP; - ps[3] = OVERWRITEALL; - ps[4] = SKIPALL; - sel = 1; - maxsel = 4; - break; - case CANCELRUN: - ps[0] = CANCEL; - ps[1] = 0; - ps[2] = 0; - ps[3] = 0; - ps[4] = 0; - sel = 1; - maxsel = 1; - break; - } - - le1 = GetStringLen(msg1, BIG); - le2 = GetStringLen(msg2, BIG); - wi = MINBOX; - if (le1 > wi ) wi = le1; - if (le2 > wi ) wi = le2; - if (wi > viewx - 6* BORDERSIZE) wi = viewx - 6* BORDERSIZE; - - he = 4* BORDERSIZE+ BUTTONHEIGHT + (*msg2 == 0x00 ? 1 : 2) * FONTHEIGHT_BIG + (maxsel > 2 ? BORDERSIZE+BUTTONHEIGHT : 0); - - - RenderBox((viewx-wi)/2 - 2*BORDERSIZE, (viewy-he) /2, viewx-(viewx-wi)/2+ 2*BORDERSIZE, viewy-(viewy-he)/2, FILL, trans_map[curvisibility]); - RenderBox((viewx-wi)/2 - 2*BORDERSIZE, (viewy-he) /2, viewx-(viewx-wi)/2+ 2*BORDERSIZE, viewy-(viewy-he)/2, GRID, WHITE); - RenderString(msg1,(viewx-wi)/2-BORDERSIZE , (viewy-he)/2 + BORDERSIZE + FONTHEIGHT_BIG-FONT_OFFSET , wi+2*BORDERSIZE, CENTER, BIG, WHITE); - if (le2 > 0) - RenderString(msg2,(viewx-wi)/2-BORDERSIZE , (viewy-he)/2 + BORDERSIZE + 2*FONTHEIGHT_BIG-FONT_OFFSET , wi+2*BORDERSIZE, CENTER, BIG, WHITE); - - - RenderButtons(he, mode); - if (mode == NOBUTTON) return 0; - int drawsel = 0; - do{ - if ((GetRCCode(RC_NORMAL) ==0) && mode == CANCELRUN) return NO; - switch(rccode) - { - case RC_OK: - rccode = -1; - return ps[sel]; - case RC_LEFT: - sel--; - if (sel < 0 ) sel = 0; - drawsel = 1; - break; - case RC_RIGHT: - sel++; - if (sel > maxsel) sel = maxsel; - drawsel = 1; - break; - case RC_UP: - if (sel > 2) sel = 1; - drawsel = 1; - break; - case RC_DOWN: - if (sel < 3) sel = 3; - drawsel = 1; - break; - case RC_RED: - rccode = -1; - return ps[0]; - case RC_GREEN: - case RC_HOME: - rccode = -1; - return ps[1]; - case RC_YELLOW: - rccode = -1; - if (maxsel > 1) - return ps[2]; - default: - continue; - } - if (drawsel) - { - switch(maxsel) - { - case 1: - RenderBox(viewx/2 - 2* BORDERSIZE -BUTTONWIDTH , viewy-(viewy-he)/2 - 2*BORDERSIZE - BUTTONHEIGHT , viewx/2 - 2* BORDERSIZE ,viewy-(viewy-he)/2- 2* BORDERSIZE , GRID, (sel == 0 ? WHITE : RED )); - RenderBox(viewx/2 - 2* BORDERSIZE -BUTTONWIDTH+1, viewy-(viewy-he)/2 - 2*BORDERSIZE - BUTTONHEIGHT+1, viewx/2 - 2* BORDERSIZE -1,viewy-(viewy-he)/2- 2* BORDERSIZE-1, GRID, (sel == 0 ? WHITE : RED )); - - RenderBox(viewx/2 + 2* BORDERSIZE , viewy-(viewy-he)/2 - 2*BORDERSIZE - BUTTONHEIGHT , viewx/2 + 2* BORDERSIZE +BUTTONWIDTH ,viewy-(viewy-he)/2- 2* BORDERSIZE , GRID, (sel == 1 ? WHITE : GREEN)); - RenderBox(viewx/2 + 2* BORDERSIZE +1, viewy-(viewy-he)/2 - 2*BORDERSIZE - BUTTONHEIGHT+1, viewx/2 + 2* BORDERSIZE +BUTTONWIDTH -1,viewy-(viewy-he)/2- 2* BORDERSIZE-1, GRID, (sel == 1 ? WHITE : GREEN)); - memcpy(lfb, lbb, fix_screeninfo.line_length*var_screeninfo.yres); - break; - case 2: - RenderBox(viewx/2 - 4* BORDERSIZE - BUTTONWIDTH - BUTTONWIDTH/2 , viewy-(viewy-he)/2 - 2*BORDERSIZE - BUTTONHEIGHT , viewx/2 - 4* BORDERSIZE - BUTTONWIDTH/2 ,viewy-(viewy-he)/2- 2* BORDERSIZE , GRID, (sel == 0 ? WHITE : RED )); - RenderBox(viewx/2 - 4* BORDERSIZE - BUTTONWIDTH - BUTTONWIDTH/2+1, viewy-(viewy-he)/2 - 2*BORDERSIZE - BUTTONHEIGHT+1, viewx/2 - 4* BORDERSIZE - BUTTONWIDTH/2 -1,viewy-(viewy-he)/2- 2* BORDERSIZE-1, GRID, (sel == 0 ? WHITE : RED )); - - RenderBox(viewx/2 - BUTTONWIDTH/2 , viewy-(viewy-he)/2 - 2*BORDERSIZE - BUTTONHEIGHT , viewx/2 + BUTTONWIDTH/2 ,viewy-(viewy-he)/2- 2* BORDERSIZE , GRID, (sel == 1 ? WHITE : GREEN )); - RenderBox(viewx/2 - BUTTONWIDTH/2 +1, viewy-(viewy-he)/2 - 2*BORDERSIZE - BUTTONHEIGHT+1, viewx/2 + BUTTONWIDTH/2 -1,viewy-(viewy-he)/2- 2* BORDERSIZE-1, GRID, (sel == 1 ? WHITE : GREEN )); - - RenderBox(viewx/2 + 4* BORDERSIZE + BUTTONWIDTH/2 , viewy-(viewy-he)/2 - 2*BORDERSIZE - BUTTONHEIGHT , viewx/2 + 4* BORDERSIZE +BUTTONWIDTH + BUTTONWIDTH/2 ,viewy-(viewy-he)/2- 2* BORDERSIZE , GRID, (sel == 2 ? BLACK : YELLOW )); - RenderBox(viewx/2 + 4* BORDERSIZE + BUTTONWIDTH/2 +1, viewy-(viewy-he)/2 - 2*BORDERSIZE - BUTTONHEIGHT+1, viewx/2 + 4* BORDERSIZE +BUTTONWIDTH + BUTTONWIDTH/2-1,viewy-(viewy-he)/2- 2* BORDERSIZE-1, GRID, (sel == 2 ? BLACK : YELLOW )); - memcpy(lfb, lbb, fix_screeninfo.line_length*var_screeninfo.yres); - break; - case 4: - RenderBox(viewx/2 - 4* BORDERSIZE - BUTTONWIDTH - BUTTONWIDTH/2 , viewy-(viewy-he)/2 - 4*BORDERSIZE - 2*BUTTONHEIGHT , viewx/2 - 4* BORDERSIZE - BUTTONWIDTH/2 ,viewy-(viewy-he)/2- 4* BORDERSIZE - BUTTONHEIGHT , GRID, (sel == 0 ? WHITE : RED )); - RenderBox(viewx/2 - 4* BORDERSIZE - BUTTONWIDTH - BUTTONWIDTH/2+1, viewy-(viewy-he)/2 - 4*BORDERSIZE - 2*BUTTONHEIGHT+1, viewx/2 - 4* BORDERSIZE - BUTTONWIDTH/2 -1,viewy-(viewy-he)/2- 4* BORDERSIZE - BUTTONHEIGHT-1, GRID, (sel == 0 ? WHITE : RED )); - - RenderBox(viewx/2 - BUTTONWIDTH/2 , viewy-(viewy-he)/2 - 4*BORDERSIZE - 2*BUTTONHEIGHT , viewx/2 + BUTTONWIDTH/2 ,viewy-(viewy-he)/2- 4* BORDERSIZE - BUTTONHEIGHT , GRID, (sel == 1 ? WHITE : GREEN )); - RenderBox(viewx/2 - BUTTONWIDTH/2 +1, viewy-(viewy-he)/2 - 4*BORDERSIZE - 2*BUTTONHEIGHT+1, viewx/2 + BUTTONWIDTH/2 -1,viewy-(viewy-he)/2- 4* BORDERSIZE - BUTTONHEIGHT-1, GRID, (sel == 1 ? WHITE : GREEN )); - - RenderBox(viewx/2 + 4* BORDERSIZE + BUTTONWIDTH/2 , viewy-(viewy-he)/2 - 4*BORDERSIZE - 2*BUTTONHEIGHT , viewx/2 + 4* BORDERSIZE +BUTTONWIDTH + BUTTONWIDTH/2 ,viewy-(viewy-he)/2- 4* BORDERSIZE - BUTTONHEIGHT , GRID, (sel == 2 ? BLACK : YELLOW )); - RenderBox(viewx/2 + 4* BORDERSIZE + BUTTONWIDTH/2 +1, viewy-(viewy-he)/2 - 4*BORDERSIZE - 2*BUTTONHEIGHT+1, viewx/2 + 4* BORDERSIZE +BUTTONWIDTH + BUTTONWIDTH/2-1,viewy-(viewy-he)/2- 4* BORDERSIZE - BUTTONHEIGHT-1, GRID, (sel == 2 ? BLACK : YELLOW )); - - RenderBox(viewx/2 - 4* BORDERSIZE - BUTTONWIDTH - BUTTONWIDTH/2 , viewy-(viewy-he)/2 - 2*BORDERSIZE - BUTTONHEIGHT , viewx/2 - 2* BORDERSIZE ,viewy-(viewy-he)/2- 2* BORDERSIZE , GRID, (sel == 3 ? WHITE : BLUE2 )); - RenderBox(viewx/2 - 4* BORDERSIZE - BUTTONWIDTH - BUTTONWIDTH/2+1, viewy-(viewy-he)/2 - 2*BORDERSIZE - BUTTONHEIGHT+1, viewx/2 - 2* BORDERSIZE -1,viewy-(viewy-he)/2- 2* BORDERSIZE -1, GRID, (sel == 3 ? WHITE : BLUE2 )); - - RenderBox(viewx/2 + 2* BORDERSIZE , viewy-(viewy-he)/2 - 2*BORDERSIZE - BUTTONHEIGHT , viewx/2 + 4* BORDERSIZE +BUTTONWIDTH + BUTTONWIDTH/2 ,viewy-(viewy-he)/2- 2* BORDERSIZE , GRID, (sel == 4 ? WHITE : BLUE2 )); - RenderBox(viewx/2 + 2* BORDERSIZE +1, viewy-(viewy-he)/2 - 2*BORDERSIZE - BUTTONHEIGHT+1, viewx/2 + 4* BORDERSIZE +BUTTONWIDTH + BUTTONWIDTH/2-1,viewy-(viewy-he)/2- 2* BORDERSIZE -1, GRID, (sel == 4 ? WHITE : BLUE2 )); - memcpy(lfb, lbb, fix_screeninfo.line_length*var_screeninfo.yres); - break; - } - drawsel = 0; - } - - }while(1); - rccode = -1; - return sel; - -} -/****************************************************************************** - * RenderButtons * - ******************************************************************************/ - -void RenderButtons(int he, int mode) -{ - switch(mode) - { - case OKCANCEL: - RenderBox(viewx/2 - 2* BORDERSIZE -BUTTONWIDTH , viewy-(viewy-he)/2 - 2*BORDERSIZE - BUTTONHEIGHT, viewx/2 - 2* BORDERSIZE ,viewy-(viewy-he)/2- 2* BORDERSIZE, FILL, RED ); - RenderBox(viewx/2 + 2* BORDERSIZE , viewy-(viewy-he)/2 - 2*BORDERSIZE - BUTTONHEIGHT, viewx/2 + 2* BORDERSIZE +BUTTONWIDTH ,viewy-(viewy-he)/2- 2* BORDERSIZE, FILL, GREEN); - RenderString(mbox[BTN_OK *NUM_LANG+language],viewx/2 - 2* BORDERSIZE -BUTTONWIDTH , viewy-(viewy-he)/2 - 2*BORDERSIZE-FONT_OFFSET , BUTTONWIDTH, CENTER, BIG, WHITE); - RenderString(mbox[BTN_CANCEL*NUM_LANG+language],viewx/2 + 2* BORDERSIZE , viewy-(viewy-he)/2 - 2*BORDERSIZE-FONT_OFFSET , BUTTONWIDTH, CENTER, BIG, WHITE); - RenderBox(viewx/2 + 2* BORDERSIZE , viewy-(viewy-he)/2 - 2*BORDERSIZE - BUTTONHEIGHT , viewx/2 + 2* BORDERSIZE +BUTTONWIDTH ,viewy-(viewy-he)/2- 2* BORDERSIZE , GRID, WHITE); - RenderBox(viewx/2 + 2* BORDERSIZE +1, viewy-(viewy-he)/2 - 2*BORDERSIZE - BUTTONHEIGHT+1, viewx/2 + 2* BORDERSIZE +BUTTONWIDTH -1,viewy-(viewy-he)/2- 2* BORDERSIZE-1, GRID, WHITE); - break; - case OKHIDDENCANCEL: - RenderBox(viewx/2 - 4* BORDERSIZE - BUTTONWIDTH - BUTTONWIDTH/2, viewy-(viewy-he)/2 - 2*BORDERSIZE - BUTTONHEIGHT, viewx/2 - 4* BORDERSIZE - BUTTONWIDTH/2 ,viewy-(viewy-he)/2- 2* BORDERSIZE, FILL, RED ); - RenderBox(viewx/2 - BUTTONWIDTH/2 , viewy-(viewy-he)/2 - 2*BORDERSIZE - BUTTONHEIGHT, viewx/2 + BUTTONWIDTH/2 ,viewy-(viewy-he)/2- 2* BORDERSIZE, FILL, GREEN ); - RenderBox(viewx/2 + 4* BORDERSIZE + BUTTONWIDTH/2 , viewy-(viewy-he)/2 - 2*BORDERSIZE - BUTTONHEIGHT, viewx/2 + 4* BORDERSIZE +BUTTONWIDTH + BUTTONWIDTH/2,viewy-(viewy-he)/2- 2* BORDERSIZE, FILL, YELLOW); - RenderString(mbox[BTN_OK *NUM_LANG+language],viewx/2 - 4* BORDERSIZE -BUTTONWIDTH - BUTTONWIDTH/2 , viewy-(viewy-he)/2 - 2*BORDERSIZE-FONT_OFFSET , BUTTONWIDTH, CENTER, BIG, WHITE); - RenderString(mbox[BTN_CANCEL*NUM_LANG+language],(viewx-BUTTONWIDTH)/2 , viewy-(viewy-he)/2 - 2*BORDERSIZE-FONT_OFFSET , BUTTONWIDTH, CENTER, BIG, WHITE); - RenderString(mbox[BTN_HIDDEN*NUM_LANG+language],viewx/2 + 4* BORDERSIZE +BUTTONWIDTH/2 , viewy-(viewy-he)/2 - 2*BORDERSIZE-FONT_OFFSET , BUTTONWIDTH, CENTER, BIG, BLACK); - RenderBox(viewx/2 -BUTTONWIDTH/2 , viewy-(viewy-he)/2 - 2*BORDERSIZE - BUTTONHEIGHT , viewx/2 + BUTTONWIDTH/2 ,viewy-(viewy-he)/2- 2* BORDERSIZE , GRID, WHITE); - RenderBox(viewx/2 -BUTTONWIDTH/2+1, viewy-(viewy-he)/2 - 2*BORDERSIZE - BUTTONHEIGHT+1, viewx/2 + BUTTONWIDTH/2 -1,viewy-(viewy-he)/2- 2* BORDERSIZE-1, GRID, WHITE); - break; - case YESNOCANCEL: - RenderBox(viewx/2 - 4* BORDERSIZE - BUTTONWIDTH - BUTTONWIDTH/2, viewy-(viewy-he)/2 - 2*BORDERSIZE - BUTTONHEIGHT, viewx/2 - 4* BORDERSIZE - BUTTONWIDTH/2 ,viewy-(viewy-he)/2- 2* BORDERSIZE, FILL, RED ); - RenderBox(viewx/2 - BUTTONWIDTH/2 , viewy-(viewy-he)/2 - 2*BORDERSIZE - BUTTONHEIGHT, viewx/2 + BUTTONWIDTH/2 ,viewy-(viewy-he)/2- 2* BORDERSIZE, FILL, GREEN ); - RenderBox(viewx/2 + 4* BORDERSIZE + BUTTONWIDTH/2 , viewy-(viewy-he)/2 - 2*BORDERSIZE - BUTTONHEIGHT, viewx/2 + 4* BORDERSIZE +BUTTONWIDTH + BUTTONWIDTH/2,viewy-(viewy-he)/2- 2* BORDERSIZE, FILL, YELLOW); - RenderString(mbox[BTN_YES *NUM_LANG+language],viewx/2 - 4* BORDERSIZE -BUTTONWIDTH - BUTTONWIDTH/2 , viewy-(viewy-he)/2 - 2*BORDERSIZE-FONT_OFFSET , BUTTONWIDTH, CENTER, BIG, WHITE); - RenderString(mbox[BTN_CANCEL*NUM_LANG+language],(viewx-BUTTONWIDTH)/2 , viewy-(viewy-he)/2 - 2*BORDERSIZE-FONT_OFFSET , BUTTONWIDTH, CENTER, BIG, WHITE); - RenderString(mbox[BTN_NO *NUM_LANG+language],viewx/2 + 4* BORDERSIZE +BUTTONWIDTH/2 , viewy-(viewy-he)/2 - 2*BORDERSIZE-FONT_OFFSET , BUTTONWIDTH, CENTER, BIG, BLACK); - RenderBox(viewx/2 -BUTTONWIDTH/2 , viewy-(viewy-he)/2 - 2*BORDERSIZE - BUTTONHEIGHT , viewx/2 + BUTTONWIDTH/2 ,viewy-(viewy-he)/2- 2* BORDERSIZE , GRID, WHITE); - RenderBox(viewx/2 -BUTTONWIDTH/2+1, viewy-(viewy-he)/2 - 2*BORDERSIZE - BUTTONHEIGHT+1, viewx/2 + BUTTONWIDTH/2 -1,viewy-(viewy-he)/2- 2* BORDERSIZE-1, GRID, WHITE); - break; - case OVERWRITECANCEL: - RenderBox(viewx/2 - 4* BORDERSIZE - BUTTONWIDTH - BUTTONWIDTH/2, viewy-(viewy-he)/2 - 2*BORDERSIZE - BUTTONHEIGHT, viewx/2 - 4* BORDERSIZE - BUTTONWIDTH/2 ,viewy-(viewy-he)/2- 2* BORDERSIZE, FILL, RED ); - RenderBox(viewx/2 - BUTTONWIDTH/2 , viewy-(viewy-he)/2 - 2*BORDERSIZE - BUTTONHEIGHT, viewx/2 + BUTTONWIDTH/2 ,viewy-(viewy-he)/2- 2* BORDERSIZE, FILL, GREEN ); - RenderBox(viewx/2 + 4* BORDERSIZE + BUTTONWIDTH/2 , viewy-(viewy-he)/2 - 2*BORDERSIZE - BUTTONHEIGHT, viewx/2 + 4* BORDERSIZE +BUTTONWIDTH + BUTTONWIDTH/2,viewy-(viewy-he)/2- 2* BORDERSIZE, FILL, YELLOW); - RenderString(mbox[BTN_OVERWRITE*NUM_LANG+language],viewx/2 - 4* BORDERSIZE -BUTTONWIDTH - BUTTONWIDTH/2 , viewy-(viewy-he)/2 - 2*BORDERSIZE-FONT_OFFSET , BUTTONWIDTH, CENTER, BIG, WHITE); - RenderString(mbox[BTN_CANCEL *NUM_LANG+language],(viewx-BUTTONWIDTH)/2 , viewy-(viewy-he)/2 - 2*BORDERSIZE-FONT_OFFSET , BUTTONWIDTH, CENTER, BIG, WHITE); - RenderString(mbox[BTN_RENAME *NUM_LANG+language],viewx/2 + 4* BORDERSIZE +BUTTONWIDTH/2 , viewy-(viewy-he)/2 - 2*BORDERSIZE-FONT_OFFSET , BUTTONWIDTH, CENTER, BIG, BLACK); - RenderBox(viewx/2 -BUTTONWIDTH/2 , viewy-(viewy-he)/2 - 2*BORDERSIZE - BUTTONHEIGHT , viewx/2 + BUTTONWIDTH/2 ,viewy-(viewy-he)/2- 2* BORDERSIZE , GRID, WHITE); - RenderBox(viewx/2 -BUTTONWIDTH/2+1, viewy-(viewy-he)/2 - 2*BORDERSIZE - BUTTONHEIGHT+1, viewx/2 + BUTTONWIDTH/2 -1,viewy-(viewy-he)/2- 2* BORDERSIZE-1, GRID, WHITE); - break; - case OVERWRITESKIPCANCEL: - RenderBox(viewx/2 - 4* BORDERSIZE - BUTTONWIDTH - BUTTONWIDTH/2, viewy-(viewy-he)/2 - 4*BORDERSIZE - 2*BUTTONHEIGHT, viewx/2 - 4* BORDERSIZE - BUTTONWIDTH/2 ,viewy-(viewy-he)/2- 4* BORDERSIZE - BUTTONHEIGHT, FILL, RED ); - RenderBox(viewx/2 - BUTTONWIDTH/2 , viewy-(viewy-he)/2 - 4*BORDERSIZE - 2*BUTTONHEIGHT, viewx/2 + BUTTONWIDTH/2 ,viewy-(viewy-he)/2- 4* BORDERSIZE - BUTTONHEIGHT, FILL, GREEN ); - RenderBox(viewx/2 + 4* BORDERSIZE + BUTTONWIDTH/2 , viewy-(viewy-he)/2 - 4*BORDERSIZE - 2*BUTTONHEIGHT, viewx/2 + 4* BORDERSIZE +BUTTONWIDTH + BUTTONWIDTH/2,viewy-(viewy-he)/2- 4* BORDERSIZE - BUTTONHEIGHT, FILL, YELLOW ); - RenderBox(viewx/2 - 4* BORDERSIZE - BUTTONWIDTH - BUTTONWIDTH/2, viewy-(viewy-he)/2 - 2*BORDERSIZE - BUTTONHEIGHT, viewx/2 - 2* BORDERSIZE ,viewy-(viewy-he)/2- 2* BORDERSIZE , FILL, BLUE2 ); - RenderBox(viewx/2 + 2* BORDERSIZE , viewy-(viewy-he)/2 - 2*BORDERSIZE - BUTTONHEIGHT, viewx/2 + 4* BORDERSIZE +BUTTONWIDTH + BUTTONWIDTH/2,viewy-(viewy-he)/2- 2* BORDERSIZE , FILL, BLUE2 ); - RenderString(mbox[BTN_OVERWRITE *NUM_LANG+language],viewx/2 - 4* BORDERSIZE - BUTTONWIDTH - BUTTONWIDTH/2, viewy-(viewy-he)/2 - 4*BORDERSIZE-FONT_OFFSET-BUTTONHEIGHT , BUTTONWIDTH, CENTER, BIG, WHITE); - RenderString(mbox[BTN_CANCEL *NUM_LANG+language],(viewx-BUTTONWIDTH)/2 , viewy-(viewy-he)/2 - 4*BORDERSIZE-FONT_OFFSET-BUTTONHEIGHT , BUTTONWIDTH, CENTER, BIG, WHITE); - RenderString(mbox[BTN_SKIP *NUM_LANG+language],viewx/2 + 4* BORDERSIZE +BUTTONWIDTH/2 , viewy-(viewy-he)/2 - 4*BORDERSIZE-FONT_OFFSET-BUTTONHEIGHT , BUTTONWIDTH, CENTER, BIG, BLACK); - RenderString(mbox[BTN_OVERWRITEALL*NUM_LANG+language],viewx/2 - 4* BORDERSIZE - BUTTONWIDTH - BUTTONWIDTH/2, viewy-(viewy-he)/2 - 2*BORDERSIZE-FONT_OFFSET , BUTTONWIDTH + BUTTONWIDTH/2 + 2* BORDERSIZE, CENTER, BIG, WHITE); - RenderString(mbox[BTN_SKIPALL *NUM_LANG+language],viewx/2 + 2* BORDERSIZE , viewy-(viewy-he)/2 - 2*BORDERSIZE-FONT_OFFSET , BUTTONWIDTH + BUTTONWIDTH/2 + 2* BORDERSIZE, CENTER, BIG, WHITE); - RenderBox(viewx/2 -BUTTONWIDTH/2 , viewy-(viewy-he)/2 - 4*BORDERSIZE - 2*BUTTONHEIGHT , viewx/2 + BUTTONWIDTH/2 ,viewy-(viewy-he)/2- 4* BORDERSIZE - BUTTONHEIGHT , GRID, WHITE); - RenderBox(viewx/2 -BUTTONWIDTH/2+1, viewy-(viewy-he)/2 - 4*BORDERSIZE - 2*BUTTONHEIGHT+1, viewx/2 + BUTTONWIDTH/2-1,viewy-(viewy-he)/2- 4* BORDERSIZE - BUTTONHEIGHT-1, GRID, WHITE); - break; - case CANCELRUN: - RenderBox((viewx-BUTTONWIDTH)/2 , viewy-(viewy-he)/2 - 2*BORDERSIZE - BUTTONHEIGHT, viewx - (viewx-BUTTONWIDTH)/2,viewy-(viewy-he)/2 - 2*BORDERSIZE , FILL, RED ); - RenderString(mbox[BTN_CANCEL*NUM_LANG+language],(viewx-BUTTONWIDTH)/2 , viewy-(viewy-he)/2 - 2*BORDERSIZE-FONT_OFFSET , BUTTONWIDTH, CENTER, BIG, WHITE); - RenderBox((viewx-BUTTONWIDTH)/2 , viewy-(viewy-he)/2 - 2*BORDERSIZE - BUTTONHEIGHT, viewx - (viewx-BUTTONWIDTH)/2,viewy-(viewy-he)/2 - 2*BORDERSIZE , GRID, WHITE); - case NOBUTTON: - break; - default: - RenderBox((viewx-BUTTONWIDTH)/2 , viewy-(viewy-he)/2 - 2*BORDERSIZE - BUTTONHEIGHT, viewx - (viewx-BUTTONWIDTH)/2,viewy-(viewy-he)/2 - 2*BORDERSIZE , FILL, RED ); - RenderString(mbox[BTN_OK*NUM_LANG+language],(viewx-BUTTONWIDTH)/2 , viewy-(viewy-he)/2 - 2*BORDERSIZE-FONT_OFFSET , BUTTONWIDTH, CENTER, BIG, WHITE); - RenderBox((viewx-BUTTONWIDTH)/2 , viewy-(viewy-he)/2 - 2*BORDERSIZE - BUTTONHEIGHT, viewx - (viewx-BUTTONWIDTH)/2,viewy-(viewy-he)/2 - 2*BORDERSIZE , GRID, WHITE); - break; - } - memcpy(lfb, lbb, fix_screeninfo.line_length*var_screeninfo.yres); -} - -/****************************************************************************** - * ShowProperties * - ******************************************************************************/ - -int ShowProperties() -{ - struct fileentry *pfe = GetSelected(curframe); - - int sel = NO, pos = -1, mode, i, le1, wi , he = 10 * BORDERSIZE + BUTTONHEIGHT + 8 * FONTHEIGHT_BIG; - int ri[3]; - char action[FILENAME_MAX]; - - ri[0] = ((pfe->fentry.st_mode & S_IRUSR) == S_IRUSR ? 1 : 0); - ri[1] = ((pfe->fentry.st_mode & S_IWUSR) == S_IWUSR ? 1 : 0); - ri[2] = ((pfe->fentry.st_mode & S_IXUSR) == S_IXUSR ? 1 : 0); - - le1 = GetStringLen(pfe->name, BIG); - wi = 400; - if (le1 + 4*BORDERSIZE > wi ) wi = le1 + 4*BORDERSIZE; - if (wi > viewx - 4* BORDERSIZE) wi = viewx - 4* BORDERSIZE; - - mode = (finfo[curframe].writable ? OKCANCEL : OK); - RenderBox((viewx-wi)/2 , (viewy-he) /2, viewx-(viewx-wi)/2, viewy-(viewy-he)/2, FILL, trans_map[curvisibility]); - RenderBox((viewx-wi)/2 , (viewy-he) /2, viewx-(viewx-wi)/2, viewy-(viewy-he)/2, GRID, WHITE); - RenderString(pfe->name,(viewx-wi)/2+ 2* BORDERSIZE , (viewy-he)/2 + 2*BORDERSIZE + FONTHEIGHT_BIG-FONT_OFFSET , wi, CENTER, BIG, WHITE); - - char sizeString[200]; - GetSizeString(sizeString,pfe->fentry.st_size,1); - sprintf(sizeString,"%s byte(s)",sizeString); - - RenderString(sizeString,(viewx-wi)/2+ 2* BORDERSIZE , (viewy-he)/2 + 2*BORDERSIZE + 2*FONTHEIGHT_BIG-FONT_OFFSET , wi, CENTER, BIG, WHITE); - - RenderString(info[INFO_ACCESSED*NUM_LANG+language],(viewx-wi)/2+ 3* BORDERSIZE , (viewy-he)/2 + 6*BORDERSIZE + (3)*FONTHEIGHT_BIG-FONT_OFFSET , wi, LEFT, BIG, WHITE); - RenderString(info[INFO_MODIFIED*NUM_LANG+language],(viewx-wi)/2+ 3* BORDERSIZE , (viewy-he)/2 + 6*BORDERSIZE + (4)*FONTHEIGHT_BIG-FONT_OFFSET , wi, LEFT, BIG, WHITE); - RenderString(info[INFO_CREATED *NUM_LANG+language],(viewx-wi)/2+ 3* BORDERSIZE , (viewy-he)/2 + 6*BORDERSIZE + (5)*FONTHEIGHT_BIG-FONT_OFFSET , wi, LEFT, BIG, WHITE); - char tm[100]; - strftime(tm,100,info[INFO_DATETIME *NUM_LANG+language],localtime(&pfe->fentry.st_atime)); - RenderString(tm,viewx/2- 2* BORDERSIZE , (viewy-he)/2 + 6*BORDERSIZE + (3)*FONTHEIGHT_BIG-FONT_OFFSET , wi/2, RIGHT, BIG, WHITE); - strftime(tm,100,info[INFO_DATETIME *NUM_LANG+language],localtime(&pfe->fentry.st_mtime)); - RenderString(tm,viewx/2- 2* BORDERSIZE , (viewy-he)/2 + 6*BORDERSIZE + (4)*FONTHEIGHT_BIG-FONT_OFFSET , wi/2, RIGHT, BIG, WHITE); - strftime(tm,100,info[INFO_DATETIME *NUM_LANG+language],localtime(&pfe->fentry.st_ctime)); - RenderString(tm,viewx/2- 2* BORDERSIZE , (viewy-he)/2 + 6*BORDERSIZE + (5)*FONTHEIGHT_BIG-FONT_OFFSET , wi/2, RIGHT, BIG, WHITE); - - for (i = 0; i < 3 ; i++) - { - RenderString(props[i*NUM_LANG+language],(viewx-wi)/2+ 3* BORDERSIZE , (viewy-he)/2 + 6*BORDERSIZE + (i+6)*FONTHEIGHT_BIG-FONT_OFFSET , wi, LEFT, BIG, WHITE); - RenderBox(viewx-(viewx-wi)/2 - 2* BORDERSIZE - FONTHEIGHT_BIG+2, (viewy-he)/2 + 6*BORDERSIZE + (i+5)*FONTHEIGHT_BIG+2, viewx-(viewx-wi)/2 - 2*BORDERSIZE-2, (viewy-he)/2 + 6*BORDERSIZE + (i+6)*FONTHEIGHT_BIG-2, FILL, (ri[i] == 0 ? RED : GREEN)); - RenderBox( (viewx-wi)/2 + 2* BORDERSIZE +1, (viewy-he)/2 + 6*BORDERSIZE + (i+5)*FONTHEIGHT_BIG+1, viewx-(viewx-wi)/2 - 2*BORDERSIZE-1, (viewy-he)/2 + 6*BORDERSIZE + (i+6)*FONTHEIGHT_BIG-1, GRID, (pos == i ? WHITE :trans_map[curvisibility])); - RenderBox( (viewx-wi)/2 + 2* BORDERSIZE +2, (viewy-he)/2 + 6*BORDERSIZE + (i+5)*FONTHEIGHT_BIG+2, viewx-(viewx-wi)/2 - 2*BORDERSIZE-2, (viewy-he)/2 + 6*BORDERSIZE + (i+6)*FONTHEIGHT_BIG-2, GRID, (pos == i ? WHITE :trans_map[curvisibility])); - } - RenderButtons(he,mode); - int drawsel = 0; - do{ - GetRCCode(RC_NORMAL); - switch(rccode) - { - case RC_OK: - if (sel == NO) return NO; - if (sel == YES) - { - if(!finfo[curframe].writable) return NO; - int m = (ri[0] << 2) | (ri[1] << 1) | ri[2]; - sprintf(action,"chmod -R %d%d%d \"%s%s\"",m,m,m, finfo[curframe].path, pfe->name); - DoExecute(action, SHOW_NO_OUTPUT); - rccode = -1; - return YES; - } - if (pos != -1) - { - ri[pos] = 1- ri[pos]; - drawsel = 1; - } - break; - case RC_LEFT: - if (mode == OKCANCEL) - { - sel = YES; - drawsel = 1; - } - break; - case RC_RIGHT: - if (mode == OKCANCEL) - { - sel = NO; - drawsel = 1; - } - break; - case RC_UP: - if (mode == OKCANCEL) - { - if (sel != -1) - { - pos = 2; - } - else - { - if (pos > 0) pos--; - } - sel = -1; - drawsel = 1; - } - break; - case RC_DOWN: - if (mode == OKCANCEL) - { - pos++; - if (pos == 3) - sel = YES; - if (pos >= 4) - { - pos = 4; - sel = NO; - } - drawsel = 1; - - } - break; - case RC_RED: - rccode = -1; - if(!finfo[curframe].writable) return NO; - int m = (ri[0] << 2) | (ri[1] << 1) | ri[2]; - sprintf(action,"chmod -R %d%d%d \"%s%s\"",m,m,m, finfo[curframe].path, pfe->name); - DoExecute(action, SHOW_NO_OUTPUT); - rccode = -1; - return YES; - case RC_GREEN: - case RC_HOME: - rccode = -1; - return NO; - default: - continue; - } - if (drawsel) - { - for (i = 0; i < 3 ; i++) - { - RenderBox(viewx-(viewx-wi)/2 - 2* BORDERSIZE - FONTHEIGHT_BIG+2, (viewy-he)/2 + 6*BORDERSIZE + (i+5)*FONTHEIGHT_BIG+2, viewx-(viewx-wi)/2 - 2*BORDERSIZE-2, (viewy-he)/2 + 6*BORDERSIZE + (i+6)*FONTHEIGHT_BIG-2, FILL, (ri[i] == 0 ? RED : GREEN)); - RenderBox( (viewx-wi)/2 + 2* BORDERSIZE +2, (viewy-he)/2 + 6*BORDERSIZE + (i+5)*FONTHEIGHT_BIG+2, viewx-(viewx-wi)/2 - 2*BORDERSIZE-2, (viewy-he)/2 + 6*BORDERSIZE + (i+6)*FONTHEIGHT_BIG-2, GRID, (pos == i ? WHITE :trans_map[curvisibility])); - RenderBox( (viewx-wi)/2 + 2* BORDERSIZE +1, (viewy-he)/2 + 6*BORDERSIZE + (i+5)*FONTHEIGHT_BIG+1, viewx-(viewx-wi)/2 - 2*BORDERSIZE-1, (viewy-he)/2 + 6*BORDERSIZE + (i+6)*FONTHEIGHT_BIG-1, GRID, (pos == i ? WHITE :trans_map[curvisibility])); - } - RenderBox(viewx/2 - 2* BORDERSIZE -BUTTONWIDTH , viewy-(viewy-he)/2 - 2*BORDERSIZE - BUTTONHEIGHT , viewx/2 - 2* BORDERSIZE ,viewy-(viewy-he)/2- 2* BORDERSIZE , GRID, (sel == YES ? WHITE : RED )); - RenderBox(viewx/2 - 2* BORDERSIZE -BUTTONWIDTH+1, viewy-(viewy-he)/2 - 2*BORDERSIZE - BUTTONHEIGHT+1, viewx/2 - 2* BORDERSIZE -1,viewy-(viewy-he)/2- 2* BORDERSIZE-1, GRID, (sel == YES ? WHITE : RED )); - RenderBox(viewx/2 + 2* BORDERSIZE , viewy-(viewy-he)/2 - 2*BORDERSIZE - BUTTONHEIGHT , viewx/2 + 2* BORDERSIZE +BUTTONWIDTH ,viewy-(viewy-he)/2- 2* BORDERSIZE , GRID, (sel == NO ? WHITE : GREEN)); - RenderBox(viewx/2 + 2* BORDERSIZE +1, viewy-(viewy-he)/2 - 2*BORDERSIZE - BUTTONHEIGHT+1, viewx/2 + 2* BORDERSIZE +BUTTONWIDTH-1,viewy-(viewy-he)/2- 2* BORDERSIZE-1, GRID, (sel == NO ? WHITE : GREEN)); - memcpy(lfb, lbb, fix_screeninfo.line_length*var_screeninfo.yres); - drawsel = 0; - } - - }while(1); - rccode = -1; - return sel; - -} - -/****************************************************************************** - * DoEditFTP * - ******************************************************************************/ - -void DoEditFTP(char* szFile,char* szTitle) -{ - FILE *fp; - char *p, *p1; - char entries[5][FILENAME_MAX]; - char line[FILENAME_MAX]; - - memset(entries,0,5*FILENAME_MAX); - fp = fopen( szFile, "r" ); - if ( !fp ) - { - printf("tuxcom: could not open ftpfile\n"); - } - else - { - while( fgets( line, 128, fp ) ) - { - if ( *line == '#' ) continue; - if ( *line == ';' ) continue; - p=strchr(line,'\n'); - if ( p ) - *p=0; - p=strchr(line,'='); - if ( !p ) - continue; - *p=0; - p++; - p1=strchr(p,'\r'); // für Windows-Nutzer: '\r' überlesen - if (p1 != NULL) *p1 = 0x00; - if ( !strcmp(line,"host") ) strcpy(entries[0], p); - else if ( !strcmp(line,"port") ) strcpy(entries[1], p); - else if ( !strcmp(line,"user") ) strcpy(entries[2], p); - else if ( !strcmp(line,"pass") ) strcpy(entries[3], p); - else if ( !strcmp(line,"dir" ) ) strcpy(entries[4], p); - } - fclose(fp); - } - - - int end = NO,sel = NO, pos = -1, i, le1, wi , he = 8 * BORDERSIZE + BUTTONHEIGHT + 6 * FONTHEIGHT_BIG; - - - le1 = GetStringLen(szTitle, BIG); - wi = 500; - if (le1 + 4*BORDERSIZE > wi ) wi = le1 + 4*BORDERSIZE; - if (wi > viewx - 4* BORDERSIZE) wi = viewx - 4* BORDERSIZE; - - RenderBox((viewx-wi)/2 , (viewy-he) /2, viewx-(viewx-wi)/2, viewy-(viewy-he)/2, FILL, trans_map[curvisibility]); - RenderBox((viewx-wi)/2 , (viewy-he) /2, viewx-(viewx-wi)/2, viewy-(viewy-he)/2, GRID, WHITE); - RenderString(szFile,(viewx-wi)/2+ 2* BORDERSIZE , (viewy-he)/2 + 2*BORDERSIZE + FONTHEIGHT_BIG-FONT_OFFSET , wi, CENTER, BIG, WHITE); - - for (i = 0; i < 5 ; i++) - { - RenderString(ftpstr[i*NUM_LANG+language],(viewx-wi)/2+ 3* BORDERSIZE , (viewy-he)/2 + 3*BORDERSIZE + (i+2)*FONTHEIGHT_BIG-FONT_OFFSET , wi, LEFT, BIG, WHITE); - RenderString(entries[i],viewx/2 , (viewy-he)/2 + 3*BORDERSIZE + (i+2)*FONTHEIGHT_BIG-FONT_OFFSET , wi, LEFT, BIG, WHITE); - RenderBox(viewx/2 - 2* BORDERSIZE , (viewy-he)/2 + 3*BORDERSIZE + (i+1)*FONTHEIGHT_BIG , viewx-(viewx-wi)/2 - 2*BORDERSIZE , (viewy-he)/2 + 3*BORDERSIZE + (i+2)*FONTHEIGHT_BIG , GRID, (pos == i ? WHITE :trans_map[curvisibility])); - RenderBox(viewx/2 - 2* BORDERSIZE-1, (viewy-he)/2 + 3*BORDERSIZE + (i+1)*FONTHEIGHT_BIG-1, viewx-(viewx-wi)/2 - 2*BORDERSIZE+1, (viewy-he)/2 + 3*BORDERSIZE + (i+2)*FONTHEIGHT_BIG+1, GRID, (pos == i ? WHITE :trans_map[curvisibility])); - } - RenderButtons(he,OKCANCEL); - int drawsel = 0; - do{ - GetRCCode(RC_NORMAL); - switch(rccode) - { - case RC_OK: - if (sel == NO) return; - if (sel == YES) - { - end = YES; - break; - } - if (pos != -1) - { - DoEditString(viewx/2-2*BORDERSIZE,(viewy-he)/2 + 4*BORDERSIZE + (pos+1)*FONTHEIGHT_BIG-FONT_OFFSET, (viewx-(viewx-wi)/2) - (viewx/2), FILENAME_MAX,entries[pos], BIG,BLUE2, NO); - RenderBox (viewx/2-3*BORDERSIZE,(viewy-he)/2 + 3*BORDERSIZE + (pos+1)*FONTHEIGHT_BIG , viewx-(viewx-wi)/2 - BORDERSIZE , (viewy-he)/2 + 3*BORDERSIZE + (pos+2)*FONTHEIGHT_BIG , FILL, BLUE1); - drawsel = 1; - } - break; - case RC_LEFT: - sel = YES; - drawsel = 1; - break; - case RC_RIGHT: - sel = NO; - drawsel = 1; - break; - case RC_UP: - if (sel != -1) - pos = 4; - else - { - if (pos > 0) pos--; - } - sel = -1; - drawsel = 1; - break; - case RC_DOWN: - pos++; - if (pos == 5) - sel = YES; - if (pos >= 6) - { - pos = 6; - sel = NO; - } - drawsel = 1; - break; - case RC_RED: - rccode = -1; - end = YES; - break; - case RC_GREEN: - case RC_HOME: - rccode = -1; - return; - default: - continue; - } - if (drawsel) - { - for (i = 0; i < 5; i++) - { - RenderString(entries[i],viewx/2 , (viewy-he)/2 + 3*BORDERSIZE + (i+2)*FONTHEIGHT_BIG-FONT_OFFSET , wi, LEFT, BIG, WHITE); - RenderBox(viewx/2 - 2* BORDERSIZE+1, (viewy-he)/2 + 3*BORDERSIZE + (i+1)*FONTHEIGHT_BIG+1, viewx-(viewx-wi)/2 - 2*BORDERSIZE-1, (viewy-he)/2 + 3*BORDERSIZE + (i+2)*FONTHEIGHT_BIG-1, GRID, (pos == i ? WHITE :trans_map[curvisibility])); - RenderBox(viewx/2 - 2* BORDERSIZE+2, (viewy-he)/2 + 3*BORDERSIZE + (i+1)*FONTHEIGHT_BIG+2, viewx-(viewx-wi)/2 - 2*BORDERSIZE-2, (viewy-he)/2 + 3*BORDERSIZE + (i+2)*FONTHEIGHT_BIG-2, GRID, (pos == i ? WHITE :trans_map[curvisibility])); - } - RenderBox(viewx/2 - 2* BORDERSIZE -BUTTONWIDTH , viewy-(viewy-he)/2 - 2*BORDERSIZE - BUTTONHEIGHT , viewx/2 - 2* BORDERSIZE ,viewy-(viewy-he)/2- 2* BORDERSIZE , GRID, (sel == YES ? WHITE : RED )); - RenderBox(viewx/2 - 2* BORDERSIZE -BUTTONWIDTH+1, viewy-(viewy-he)/2 - 2*BORDERSIZE - BUTTONHEIGHT+1, viewx/2 - 2* BORDERSIZE -1,viewy-(viewy-he)/2- 2* BORDERSIZE-1, GRID, (sel == YES ? WHITE : RED )); - RenderBox(viewx/2 + 2* BORDERSIZE , viewy-(viewy-he)/2 - 2*BORDERSIZE - BUTTONHEIGHT , viewx/2 + 2* BORDERSIZE +BUTTONWIDTH ,viewy-(viewy-he)/2- 2* BORDERSIZE , GRID, (sel == NO ? WHITE : GREEN)); - RenderBox(viewx/2 + 2* BORDERSIZE +1, viewy-(viewy-he)/2 - 2*BORDERSIZE - BUTTONHEIGHT+1, viewx/2 + 2* BORDERSIZE +BUTTONWIDTH-1,viewy-(viewy-he)/2- 2* BORDERSIZE-1, GRID, (sel == NO ? WHITE : GREEN)); - memcpy(lfb, lbb, fix_screeninfo.line_length*var_screeninfo.yres); - drawsel = 0; - } - if (end == YES) - { - fp = fopen( szFile, "w" ); - if ( !fp ) - { - printf("tuxcom: could not open ftpfile\n"); - } - else - { - fprintf(fp,"host=%s\n", entries[0]); - fprintf(fp,"port=%s\n", entries[1]); - fprintf(fp,"user=%s\n", entries[2]); - fprintf(fp,"pass=%s\n", entries[3]); - fprintf(fp,"dir=%s\n" , entries[4]); - fclose(fp); - } - break; - } - - - }while(1); - rccode = -1; - return; - -} -/****************************************************************************** - * DoMainMenu * - ******************************************************************************/ - -void DoMainMenu() -{ - int pos = 0, i, wi , he = (MAINMENU+1) * BORDERSIZE + MAINMENU * FONTHEIGHT_BIG; - wi = 660; - char szEntry[200]; - if (wi > viewx - 4* BORDERSIZE) wi = viewx - 4* BORDERSIZE; - - RenderBox((viewx-wi)/2 , (viewy-he) /2, viewx-(viewx-wi)/2, viewy-(viewy-he)/2, FILL, trans_map[curvisibility]); - RenderBox((viewx-wi)/2 , (viewy-he) /2, viewx-(viewx-wi)/2, viewy-(viewy-he)/2, GRID, WHITE); - - for (i = 0; i < MAINMENU ; i++) - { - RenderBox((viewx-wi)/2+ BORDERSIZE , (viewy-he)/2 + BORDERSIZE + (i)*FONTHEIGHT_BIG , viewx-(viewx-wi)/2 - BORDERSIZE , (viewy-he)/2 + BORDERSIZE + (i+1)*FONTHEIGHT_BIG , FILL, (pos == i ? BLUE2 :trans_map[curvisibility])); - switch(i) - { - case 4: // set filesize in bytes - sprintf(szEntry,mainmenu[i*NUM_LANG+language],mbox[filesize_in_byte*NUM_LANG+language]); - break; - case 5: // set language - sprintf(szEntry,mainmenu[i*NUM_LANG+language],mbox[langselect *NUM_LANG+language]); - break; - case 6: // save settings - sprintf(szEntry,mainmenu[i*NUM_LANG+language],mbox[autosave *NUM_LANG+language]); - break; - default: - strcpy(szEntry,mainmenu[i*NUM_LANG+language]); - break; - } - RenderString(szEntry,(viewx-wi)/2+ BORDERSIZE , (viewy-he)/2 + BORDERSIZE + (i+1)*FONTHEIGHT_BIG-FONT_OFFSET , wi, CENTER, BIG, WHITE); - } - memcpy(lfb, lbb, fix_screeninfo.line_length*var_screeninfo.yres); - int drawsel = 0; - do{ - GetRCCode(RC_NORMAL); - switch(rccode) - { - case RC_OK: - { - rccode = -1; - switch (pos) - { - case 0: - DoSearchFiles(); - return; - case 1: - DoTaskManager(); - return; - case 2: - screenmode = 1-screenmode; - //ioctl(avs, AVSIOSSCARTPIN8, &fncmodes[screenmode]); - //ioctl(saa, SAAIOSWSS, &saamodes[screenmode]); - return; - case 3: - SetPassword(); - return; - case 7: - WriteSettings(); - MessageBox(info[INFO_SAVED*NUM_LANG+language],"",OK); - return; - } - } - break; - case RC_UP: - pos--; - if (pos < 0) pos = MAINMENU-1; - drawsel = 1; - break; - case RC_DOWN: - pos++; - if (pos >= MAINMENU) pos = 0; - drawsel = 1; - break; - case RC_LEFT: - switch (pos) - { - case 4: - switch (filesize_in_byte) - { - case BTN_YES : filesize_in_byte = BTN_NO ; break; - case BTN_NO : filesize_in_byte = BTN_YES ; break; - } - break; - case 5: - switch (langselect) - { - case BTN_AUTO : langselect = BTN_ENGLISH ; break; - case BTN_PORTUGUES: langselect = BTN_AUTO ; break; - case BTN_SWEDISH : langselect = BTN_PORTUGUES; break; - case BTN_ITALIAN : langselect = BTN_SWEDISH ; break; - case BTN_GERMAN : langselect = BTN_ITALIAN ; break; - case BTN_ENGLISH : langselect = BTN_GERMAN ; break; - } - SetLanguage(); - break; - case 6: - switch (autosave) - { - case BTN_ASK : autosave = BTN_NO ; break; - case BTN_YES : autosave = BTN_ASK ; break; - case BTN_NO : autosave = BTN_YES ; break; - } - break; - } - drawsel = 1; - break; - case RC_RIGHT: - switch (pos) - { - case 4: - switch (filesize_in_byte) - { - case BTN_YES : filesize_in_byte = BTN_NO ; break; - case BTN_NO : filesize_in_byte = BTN_YES ; break; - } - break; - case 5: - switch (langselect) - { - case BTN_AUTO : langselect = BTN_PORTUGUES; break; - case BTN_PORTUGUES: langselect = BTN_SWEDISH ; break; - case BTN_SWEDISH : langselect = BTN_ITALIAN ; break; - case BTN_ITALIAN : langselect = BTN_GERMAN ; break; - case BTN_GERMAN : langselect = BTN_ENGLISH ; break; - case BTN_ENGLISH : langselect = BTN_AUTO ; break; - } - SetLanguage(); - break; - case 6: - switch (autosave) - { - case BTN_ASK : autosave = BTN_YES ; break; - case BTN_YES : autosave = BTN_NO ; break; - case BTN_NO : autosave = BTN_ASK ; break; - } - break; - } - drawsel = 1; - break; - case RC_HOME: - rccode = -1; - return; - default: - continue; - } - if (drawsel) - { - for (i = 0; i < MAINMENU; i++) - { - RenderBox((viewx-wi)/2+ BORDERSIZE , (viewy-he)/2 + BORDERSIZE + (i)*FONTHEIGHT_BIG , viewx-(viewx-wi)/2 - BORDERSIZE , (viewy-he)/2 + BORDERSIZE + (i+1)*FONTHEIGHT_BIG , FILL, (pos == i ? BLUE2 :trans_map[curvisibility])); - switch(i) - { - case 4: // set filesize in bytes - sprintf(szEntry,mainmenu[i*NUM_LANG+language],mbox[filesize_in_byte*NUM_LANG+language]); - break; - case 5: // set language - sprintf(szEntry,mainmenu[i*NUM_LANG+language],mbox[langselect*NUM_LANG+language]); - break; - case 6: // save settings - sprintf(szEntry,mainmenu[i*NUM_LANG+language],mbox[autosave *NUM_LANG+language]); - break; - default: - strcpy(szEntry,mainmenu[i*NUM_LANG+language]); - break; - } - RenderString(szEntry,(viewx-wi)/2+ BORDERSIZE , (viewy-he)/2 + BORDERSIZE + (i+1)*FONTHEIGHT_BIG-FONT_OFFSET , wi, CENTER, BIG, WHITE); - } - memcpy(lfb, lbb, fix_screeninfo.line_length*var_screeninfo.yres); - drawsel = 0; - } - }while(1); - rccode = -1; - return; - -} -/****************************************************************************** - * DoSearchFiles * - ******************************************************************************/ - -void DoSearchFiles() -{ - char szMsg[FILENAME_MAX+256]; - char action[1000]; - sprintf(szMsg,msg[MSG_SEARCHFILES*NUM_LANG+language],finfo[curframe].path); - if (GetInputString(400,FILENAME_MAX,szSearchstring,szMsg,NO) == RC_OK && (*szSearchstring != 0x00)) - { - colortool[0] = ACTION_NOACTION; - colortool[1] = ACTION_NOACTION; - colortool[2] = ACTION_NOACTION; - colortool[3] = ACTION_NOACTION; - RenderMenuLine(-1, NO); - - sprintf(action,"find \"%s\" -name \"%s\"",finfo[curframe].path,szSearchstring); - MessageBox(info[INFO_SEARCH1*NUM_LANG+language],"",NOBUTTON); - DoExecute(action, SHOW_SEARCHRESULT); - - } -} -/****************************************************************************** - * GetInputString * - ******************************************************************************/ - -int GetInputString(int width,int maxchars, char* str, char * msg, int pass) -{ - - - int le1, wi, he, x , y; - - - - le1 = GetStringLen(msg, BIG); - wi = MINBOX; - if (width > viewx - 8* BORDERSIZE) width = viewx - 8* BORDERSIZE; - if (le1 > wi ) wi = le1 + 6*BORDERSIZE; - if (width > wi ) wi = width + 6*BORDERSIZE; - if (wi > viewx - 6* BORDERSIZE) wi = viewx - 6* BORDERSIZE; - - he = 6* BORDERSIZE+ 2*FONTHEIGHT_BIG; - - - RenderBox((viewx-wi)/2 , (viewy-he) /2, viewx-(viewx-wi)/2, viewy-(viewy-he)/2, FILL, trans_map[curvisibility]); - RenderBox((viewx-wi)/2 , (viewy-he) /2, viewx-(viewx-wi)/2, viewy-(viewy-he)/2, GRID, WHITE); - RenderString(msg,(viewx-wi)/2-BORDERSIZE , (viewy-he)/2 + BORDERSIZE + FONTHEIGHT_BIG-FONT_OFFSET , wi+2*BORDERSIZE, CENTER, BIG, WHITE); - - x = (viewx-width)/2 - BORDERSIZE; - y = (viewy-he)/2+ 2*BORDERSIZE + FONTHEIGHT_BIG; - - RenderBox(x,y, x+width +2*BORDERSIZE, y+FONTHEIGHT_BIG+2*BORDERSIZE, FILL, trans_map[curvisibility]); - RenderBox(x,y, x+width , y+FONTHEIGHT_BIG+2*BORDERSIZE, GRID, WHITE); - - return DoEditString(x+BORDERSIZE,y+BORDERSIZE,width-2*BORDERSIZE,maxchars,str, BIG,BLUE1, pass); -} -/****************************************************************************** - * DoEditString * - ******************************************************************************/ - - -int DoEditString(int x, int y, int width, int maxchars, char* str, int vsize, int back, int pass) -{ - - int pos = 0, start = 0, slen, he = (vsize==BIG ? FONTHEIGHT_BIG : FONTHEIGHT_SMALL); - int prev_key = -1; - int markmode = 0, markpos=0; - char szbuf[maxchars+1]; - char szdst[maxchars+1]; - char * pch; - - memset(szdst, 0,maxchars+1); - strcpy(szdst,str); - szdst[strlen(szdst)] = ' '; - szdst[strlen(szdst)+1] = 0x00; - strcpy(szbuf,str); - szbuf[1] = 0x00; - - RenderBox(x-1,y, x+width+1, y+he, FILL, back); - RenderBox(x-1,y, x+GetStringLen(szbuf, vsize)+1, y+he, FILL, RED); - RenderString(szdst,x, y+he-FONT_OFFSET, width, LEFT, vsize, WHITE); - - colortool[0] = ACTION_CLEAR ; - colortool[1] = (pass == NO ? ACTION_MARKTEXT : ACTION_NOACTION); - colortool[2] = (textuppercase == 0 ? ACTION_UPPERCASE : ACTION_LOWERCASE); - colortool[3] = (pass == NO ? ACTION_INSTEXT : ACTION_NOACTION); - RenderMenuLine(-1, EDIT); - - memcpy(lfb, lbb, fix_screeninfo.line_length*var_screeninfo.yres); - - do{ - while (GetRCCode(RC_EDIT) == 0); -#ifndef HAVE_DREAMBOX_HARDWARE - if ((rccode >=0x20) && (rccode < 0x0100)) - { - kbcode=rccode; - if ((kbcode>=RC_0) && (kbcode<=RC_9)) - { - rccode-=RC_0; - kbcode=0; - if (markmode == 0) - { - if (prev_key != -1 && rccode != prev_key) // jump to next char when other number pressed - { - pos++; - if (pos >= strlen(szdst)) - { - if (pos > maxchars) pos = maxchars; - else - strcat(szdst," "); - } - } - prev_key = rccode; - pch = strchr(numberchars[rccode],tolower(szdst[pos])); - if (pch == NULL) szdst[pos] = (textuppercase == 0 ? numberchars[rccode][0] : toupper(numberchars[rccode][0])); - else - { - if (pch == &(numberchars[rccode][strlen(numberchars[rccode])-1])) szdst[pos] = (textuppercase == 0 ? numberchars[rccode][0]: toupper(numberchars[rccode][0])); - else szdst[pos] = (textuppercase == 0 ? *((char*)pch+1) : toupper(*((char*)pch+1))); - } - } - } - } - else if ((rccode >= 0x0201) && (rccode <= 0x020A)) - { - kbcode = (rccode & 0x00FF) ; - if (kbcode == 10) kbcode = 0; - kbcode += RC_0; - } - else - kbcode = 0; -#endif - if (kbcode != 0 && markmode == 0) - { - if (kbcode == 0x7f) // backspace - { - if (pos > 0) - { - if (pos== strlen(szdst)-1) // remove last char when at end of line - { - szdst[pos-1] = 0x00; - } - else if (szdst[pos] != 0x00) - { - strcpy(szbuf,(char*)(szdst+pos)); - strcpy((char*)(szdst+pos-1),szbuf); - } - pos--; - } - } - else if (kbcode >= 0x20) - { - if (szdst[pos] != 0x00) - { - strcpy(szbuf,(char*)(szdst+pos)); - szdst[pos] = kbcode; - strcpy((char*)(szdst+pos+1),szbuf); - } - pos++; - } - prev_key = -1; - rccode = -1; - } - switch(rccode) - { - case RC_OK: - if (markmode == 0) - { - *str = 0x00; - strncpy(str,szdst,maxchars); - if (strlen(szdst) > 0) - { - str[strlen(szdst)] = 0x00; - while (str[strlen(str)-1] == ' ') - str[strlen(str)-1] = 0x00; - } - rccode = -1; - return RC_OK; - } - else - { - memset(szClipboard,0,256); - if (pos != markpos) - { - if (pos > markpos) - strncpy(szClipboard,(szdst+markpos),(pos-markpos)); - else - strncpy(szClipboard,(szdst+pos),(markpos-pos)); - } - markmode = 0; - break; - } - case RC_LEFT: - pos--; - prev_key = -1; - break; - case RC_RIGHT: - pos++; - prev_key = -1; - break; - case RC_PLUS: - if (markmode == 0) - { - if (szdst[pos] != 0x00) - { - strcpy(szbuf,(char*)(szdst+pos)); - szdst[pos] = ' '; - strcpy((char*)(szdst+pos+1),szbuf); - } - prev_key = -1; - } - break; - case RC_MINUS: - if (markmode == 0) - { - if (pos== strlen(szdst)-1) // remove last char when at end of line - { - pos--; - szdst[pos] = 0x00; - } - else if (szdst[pos] != 0x00) - { - strcpy(szbuf,(char*)(szdst+pos+1)); - strcpy((char*)(szdst+pos),szbuf); - } - prev_key = -1; - } - break; - case RC_DOWN: - if (markmode == 0) - { - pch = strchr(charset,szdst[pos]); - if (pch == NULL) szdst[pos] = ' '; - else - { - if (pch == charset) szdst[pos] = charset[strlen(charset)-1]; - else szdst[pos] = *((char*)pch-1); - } - prev_key = -1; - } - break; - case RC_UP: - if (markmode == 0) - { - pch = strchr(charset,szdst[pos]); - if (pch == NULL) szdst[pos] = ' '; - else - { - if (pch == &(charset[strlen(charset)-1])) szdst[pos] = charset[0]; - else szdst[pos] = *((char*)pch+1); - } - prev_key = -1; - } - break; - case RC_0: - case RC_1: - case RC_2: - case RC_3: - case RC_4: - case RC_5: - case RC_6: - case RC_7: - case RC_8: - case RC_9: - if (markmode == 0) - { - if (prev_key != -1 && rccode != prev_key) // jump to next char when other number pressed - { - pos++; - if (pos >= strlen(szdst)) - { - if (pos > maxchars) pos = maxchars; - else - strcat(szdst," "); - } - } - prev_key = rccode; - pch = strchr(numberchars[rccode],tolower(szdst[pos])); - if (pch == NULL) szdst[pos] = (textuppercase == 0 ? numberchars[rccode][0] : toupper(numberchars[rccode][0])); - else - { - if (pch == &(numberchars[rccode][strlen(numberchars[rccode])-1])) szdst[pos] = (textuppercase == 0 ? numberchars[rccode][0]: toupper(numberchars[rccode][0])); - else szdst[pos] = (textuppercase == 0 ? *((char*)pch+1) : toupper(*((char*)pch+1))); - } - } - break; - case RC_RED: - if (markmode == 0) - { - szdst[0] = 0x00; - pos = 0; - prev_key = -1; - } - break; - case RC_GREEN: - if (markmode == 0 && pass == NO) - { - markmode = 1; - markpos = pos; - } - break; - case RC_YELLOW: - if (markmode == 0) - { - textuppercase = 1-textuppercase; - szdst[pos] = (textuppercase == 0 ? tolower(szdst[pos]) : toupper(szdst[pos])); - } - break; - case RC_BLUE: - if (markmode == 0 && pass == NO) - { - if (szdst[pos] != 0x00 && szClipboard[0] != 0x00) - { - strcpy(szbuf,(char*)(szdst+pos)); - strcpy((char*)(szdst+pos),szClipboard); - strcpy((char*)(szdst+pos+strlen(szClipboard)),szbuf); - } - } - break; - case RC_HOME: - rccode = -1; - if (markmode == 0) - { - return RC_HOME; - } - else - { - markmode = 0; - break; - } - - } - if (pos < 0 ) pos = 0; - if (pos >= strlen(szdst)) - { - if (pos > maxchars) pos = maxchars; - else - { - char* c = strchr(szdst,'\n'); - if (c) *c = ' '; - strcat(szdst," "); - } - } - if (start > pos) start = pos; - while (1) - { - strcpy(szbuf,(char*)(szdst+start)); - szbuf[pos+1-start] = 0x00; - slen = GetStringLen(szbuf, vsize); - if (slen >= width - 2*BORDERSIZE) - start++; - else - break; - } - if (pass == NO) - strcpy(szbuf,(char*)(szdst+start)); - else - strcpy(szbuf,"******************"); - if (markmode == 0) - szbuf[pos+1-start] = 0x00; - else - { - if (pos > markpos) - szbuf[pos -start] = 0x00; - else - szbuf[markpos -start] = 0x00; - } - slen = GetStringLen(szbuf, vsize); - if (markmode == 0) - szbuf[pos-start] = 0x00; - else - { - if (pos > markpos) - szbuf[markpos -start] = 0x00; - else - szbuf[pos -start] = 0x00; - } - int slen2=GetStringLen(szbuf, vsize); - - RenderBox(x-1,y, x+width+1, y+he, FILL, back); - RenderBox(x+slen2-1,y, x+slen+1, y+he, FILL, (markmode == 0 ? RED : GREEN)); - if (pass == NO) - RenderString((char*)(szdst+start),x, y+he-FONT_OFFSET, width, LEFT, vsize, WHITE); - else - { - strcpy(szbuf,"******************"); - szbuf[strlen(szdst)]=0x00; - RenderString(szbuf,x, y+he-FONT_OFFSET, width, LEFT, vsize, WHITE); - } - if (markmode == 0) - { - colortool[0] = ACTION_CLEAR ; - colortool[1] = (pass == NO ? ACTION_MARKTEXT : ACTION_NOACTION); - colortool[2] = (textuppercase == 0 ? ACTION_UPPERCASE : ACTION_LOWERCASE); - colortool[3] = (pass == NO ? ACTION_INSTEXT : ACTION_NOACTION); - } - else - { - colortool[0] = ACTION_NOACTION; - colortool[1] = ACTION_NOACTION; - colortool[2] = ACTION_NOACTION; - colortool[3] = ACTION_NOACTION; - } - RenderMenuLine(-1, EDIT); - memcpy(lfb, lbb, fix_screeninfo.line_length*var_screeninfo.yres); - }while(1); - - rccode = -1; - return rccode; -} - -/****************************************************************************** - * flistcmp * - ******************************************************************************/ - -int flistcmp(struct fileentry * p1, struct fileentry * p2) -{ - - if (S_ISDIR(p1->fentry.st_mode) ) - { - if (strcmp(p1->name,"..") == 0) - return -1; - if (strcmp(p1->name,"/") == 0) - return -1; - if (S_ISDIR(p2->fentry.st_mode) ) - return strcmp(p1->name,p2->name) * cursort; - else - return -1; - } - if (S_ISDIR(p2->fentry.st_mode) ) - { - if (strcmp(p1->name,"..") == 0) - return -1; - if (strcmp(p1->name,"/") == 0) - return -1; - return 1; - } - else - return strcmp(p1->name,p2->name) * cursort; -} - -/****************************************************************************** - * sortframe * - ******************************************************************************/ - -void sortframe(int frame, char* szSel) -{ - int i; - - qsort(finfo[frame].flist,finfo[frame].count, sizeof(struct fileentry),(__compar_fn_t)flistcmp); - for (i =0; i < finfo[frame].count; i++) - { - if (strcmp(getfileentry(frame, i)->name,szSel) == 0) - { - finfo[frame].selected = i; - break; - } - } -} -/****************************************************************************** - * getfileentry * - ******************************************************************************/ - -struct fileentry* getfileentry(int frame, int pos) -{ - return &finfo[frame].flist[pos]; -} - -/****************************************************************************** - * GetSelected * - ******************************************************************************/ - -struct fileentry* GetSelected(int frame) -{ - return &finfo[frame].flist[finfo[frame].selected]; -} -/****************************************************************************** - * SetSelected * - ******************************************************************************/ - -void SetSelected(int frame, const char* szFile) -{ - int i; - for (i = 0; i < finfo[frame].count; i++) - { - if (strcmp(finfo[frame].flist[i].name,szFile) == 0) - { - finfo[frame].selected = i; - if (finfo[frame].selected < 0) - finfo[frame].selected = 0; - if (finfo[frame].selected >= finfo[frame].count) - finfo[frame].selected = finfo[frame].count -1; - if (finfo[frame].first > finfo[frame].selected) - finfo[frame].first = finfo[frame].selected; - if (finfo[frame].selected >= finfo[frame].first + framerows) - finfo[frame].first = finfo[frame].selected - framerows+1; - break; - } - } -} -/****************************************************************************** - * FindFile * - ******************************************************************************/ - -struct fileentry* FindFile(int frame, const char* szFile) -{ - int i; - for (i = 0; i < finfo[frame].count; i++) - { - if (strcmp(finfo[frame].flist[i].name,szFile) == 0) return &finfo[frame].flist[i]; - } - return NULL; -} - -/****************************************************************************** - * ClearEntries * - ******************************************************************************/ - -void ClearEntries(int frame) -{ - - if (finfo[frame].flist != NULL) - { - free(finfo[frame].flist); - finfo[frame].flist = NULL; - } -} -/****************************************************************************** - * ClearZipEntries * - ******************************************************************************/ - -void ClearZipEntries(int frame) -{ - struct zipfileentry * pzfe, *pzfe1 = finfo[frame].allziplist; - while (pzfe1 != NULL) - { - pzfe = pzfe1; - pzfe1 = pzfe1->next; - free(pzfe); - } - - finfo[frame].allziplist = NULL; - finfo[frame].zipfile[0] = 0x00; - if (finfo[frame].ftpconn != NULL) - { - char buf[512]; - FTPcmd(frame, "QUIT",NULL,buf); - fclose(finfo[frame].ftpconn); - finfo[frame].ftpconn = NULL; - } - -} -/****************************************************************************** - * ClearMarker * - ******************************************************************************/ - -void ClearMarker(int frame) -{ - struct marker * pmk, *pmk1 = finfo[frame].mlist; - while (pmk1 != NULL) - { - pmk = pmk1; - pmk1 = pmk1->next; - free(pmk); - } - finfo[frame].mlist = NULL; - finfo[frame].markcount = 0; - finfo[frame].marksize = 0; -} -/****************************************************************************** - * ToggleMarker * - ******************************************************************************/ - -void ToggleMarker(int frame) -{ - struct fileentry *pfe = GetSelected(frame); - struct marker * pmk = NULL, *pmk1 = finfo[frame].mlist; - - if (strcmp(pfe->name,"..") == 0) return; - while (pmk1 != NULL) - { - if (strcmp(pmk1->name,pfe->name) == 0) - { - if (pmk == NULL) - finfo[frame].mlist = pmk1->next; - else - pmk->next = pmk1->next; - free(pmk1); - finfo[frame].markcount--; - if (!S_ISDIR(pfe->fentry.st_mode)) - finfo[frame].marksize -= pfe->fentry.st_size; - return; - } - pmk = pmk1; - pmk1 = pmk1->next; - } - pmk = malloc(sizeof(struct marker)); - strcpy(pmk->name,pfe->name); - pmk->next = finfo[frame].mlist; - finfo[frame].mlist = pmk; - finfo[frame].markcount++; - if (!S_ISDIR(pfe->fentry.st_mode)) - finfo[frame].marksize += pfe->fentry.st_size; -} -/****************************************************************************** - * RenameMarker * - ******************************************************************************/ - -void RenameMarker(int frame, const char* szOld, const char* szNew ) -{ - struct marker * pmk = finfo[frame].mlist; - - while (pmk != NULL) - { - if (strcmp(pmk->name,szOld) == 0) - { - strcpy(pmk->name,szNew); - return; - } - pmk = pmk->next; - } -} -/****************************************************************************** - * IsMarked * - ******************************************************************************/ - -int IsMarked(int frame, int pos) -{ - struct fileentry *pfe = getfileentry(frame, pos); - struct marker * pmk = finfo[frame].mlist; - while (pmk != NULL) - { - if (strcmp(pmk->name,pfe->name) == 0) - { - return 1; - } - pmk = pmk->next; - } - return 0; -} - -/****************************************************************************** - * CheckOverwrite * - ******************************************************************************/ -int CheckOverwrite(struct fileentry* pfe, int mode, char* szNew) -{ - char szMessage[356]; - - strcpy(szNew,pfe->name); - if (overwriteall != 0) - { - if (S_ISDIR(pfe->fentry.st_mode)) *szNew = 0x00; - return overwriteall; - } - - if (FindFile(1-curframe,pfe->name) != NULL) - { - if (skipall != 0) return skipall; - sprintf(szMessage,msg[MSG_FILE_EXISTS*NUM_LANG+language], pfe->name); - switch (MessageBox(szMessage,"",mode)) - { - case OVERWRITE: - if (S_ISDIR(pfe->fentry.st_mode)) *szNew = 0x00; - return OVERWRITE; - break; - case OVERWRITEALL: - if (S_ISDIR(pfe->fentry.st_mode)) *szNew = 0x00; - overwriteall = OVERWRITE; - return OVERWRITE; - case SKIP: - return SKIP; - case SKIPALL: - skipall = SKIP; - return SKIP; - case RENAME: - sprintf(szMessage,msg[MSG_RENAME*NUM_LANG+language], pfe->name); - if (GetInputString(400,255,szNew,szMessage, NO) == RC_OK) - return RENAME; - else - return -1; - case CANCEL: - overwriteall = -1; - skipall = -1; - return -1; - - } - } - return OVERWRITE; -} -/****************************************************************************** - * FillDir * - ******************************************************************************/ - -void FillDir(int frame, int selmode) -{ - char* pch; - char selentry[256]; - *selentry = 0x00; - char szSel[256]; - *szSel = 0x00; - int npos = 0; - struct fileentry* pfe = NULL; - if (finfo[frame].selected > 0) - { - strcpy(szSel,GetSelected(frame)->name); - } - if (finfo[frame].zipfile[0] != 0x00) - { - if ((selmode == SELECT_UPDIR) &&(frame == curframe)) - { - if (strcmp(finfo[frame].zippath,"/") == 0) - { - strncat(finfo[curframe].path,finfo[frame].zipfile,256); - strncat(finfo[curframe].path,"/",1); - ClearZipEntries(frame); - } - } - } - ClearEntries(frame); - if (finfo[frame].zipfile[0] != 0x00) // filling zipfile structure - { - char szDir[2000]; - if ((selmode == SELECT_UPDIR) &&(frame == curframe)) - { - finfo[frame].zippath[strlen(finfo[frame].zippath)-1]=0x00; - pch = strrchr(finfo[frame].zippath,'/'); - if (pch) - { - strcpy(selentry,(pch+1)); - *(pch+1) = 0x00; - } - ReadFTPDir(frame,".."); - } - else if (strcmp(finfo[frame].zippath,"/") == 0) - ReadFTPDir(frame,"/"); - else - { - strcpy(szDir,finfo[frame].zippath); - szDir[strlen(szDir)-1]=0x00; - pch = strrchr(szDir,'/'); - ReadFTPDir(frame,pch+1); - } - - finfo[frame].count = 1; - finfo[frame].size = 0; - finfo[frame].writable = 0; - struct zipfileentry * pzfe; - int zlen = strlen(finfo[frame].zippath); - - sprintf(szDir,"%s.",finfo[frame].zippath); - - pzfe = finfo[frame].allziplist; - while (pzfe != NULL) - { - if (strcmp(pzfe->name, szDir) != 0) - { - if ((strncmp(finfo[frame].zippath,pzfe->name,zlen) == 0) && (strrchr(pzfe->name,'/') == (char*)(pzfe->name+zlen-1))) - { - finfo[frame].count++; - finfo[frame].size+= pzfe->fentry.st_size; - } - } - pzfe = pzfe->next; - } - finfo[frame].flist = (struct fileentry*)calloc(finfo[frame].count, sizeof(struct fileentry)); - - pfe = getfileentry(frame, npos); - // create ".." entry - strcpy(pfe->name,".."); - memset(&pfe->fentry, 0, sizeof(struct stat)); - pfe->fentry.st_mode = S_IFDIR; - npos++; - pzfe = finfo[frame].allziplist; - while (pzfe != NULL) - { - if ((strncmp(finfo[frame].zippath,pzfe->name,zlen) == 0) && (strrchr(pzfe->name,'/') == (char*)(pzfe->name+zlen-1))) - { - pfe = getfileentry(frame, npos); - int ppos = strcspn((char*)(pzfe->name+zlen),"/"); - if (ppos > 0) - { - strncpy(pfe->name,(char*)(pzfe->name+zlen),ppos); - pfe->name[strlen(pfe->name)-1] = 0x00; - } - else - strcpy(pfe->name,(char*)(pzfe->name+zlen)); - memcpy(&pfe->fentry,&pzfe->fentry,sizeof(struct stat)); - if ((selmode == SELECT_UPDIR) && (strcmp(pfe->name,selentry) == 0) && (frame==curframe)) - { - finfo[frame].selected = npos; - strcpy(szSel,GetSelected(frame)->name); - } - npos++; - } - pzfe = pzfe->next; - } - } - else // filling normal directory - { - if (finfo[frame].path[0] != '/') strcpy(finfo[frame].path, DEFAULT_PATH); - if ((selmode == SELECT_UPDIR) &&(frame == curframe)) - { - finfo[curframe].path[strlen(finfo[curframe].path)-1]=0x00; - pch = strrchr(finfo[frame].path,'/'); - if (pch) - { - strcpy(selentry,(pch+1)); - *(pch+1) = 0x00; - } - - } - else if ((selmode == SELECT_ROOTDIR) &&(frame == curframe)) - { - pch = strchr(&(finfo[frame].path[1]),'/'); - if (pch) - { - strcpy(selentry,(pch+1)); - *(pch+1) = 0x00; - } - strcpy(finfo[frame].path, DEFAULT_PATH); - - } -#if DEBUG - printf("filling directory structure:<%s>\n", finfo[frame].path); -#endif - DIR* dp = opendir(finfo[frame].path); - - struct dirent *dentry; - char fullfile[FILENAME_MAX]; - finfo[frame].count = (strcmp(finfo[frame].path,"/") == 0 ? 0 : 2); - finfo[frame].size = 0; - finfo[frame].writable = 0; - if (!dp) - { - printf("cannot read %s\n", finfo[frame].path); - strcpy(finfo[frame].path, DEFAULT_PATH); - dp = opendir(finfo[frame].path); - } - while((dentry = readdir(dp)) != NULL) - { - if (strcmp(dentry->d_name,".") == 0) - { - struct stat st; - sprintf(fullfile,"%s.",finfo[frame].path); - lstat(fullfile,&st); - if ((st.st_mode & S_IWUSR) == S_IWUSR ) - finfo[frame].writable = 1; - continue; - } - if (strcmp(dentry->d_name,"..") == 0) - continue; - finfo[frame].count++; - } - - finfo[frame].flist = (struct fileentry*)calloc(finfo[frame].count, sizeof(struct fileentry)); - - - // rewinddir not defined ????????????????? - closedir(dp); - dp = opendir(finfo[frame].path); - - if (strcmp(finfo[frame].path,"/") != 0) - { - // create "/" entry when not in root dir - pfe = getfileentry(frame, npos); - strcpy(pfe->name,"/"); - memset(&pfe->fentry, 0, sizeof(struct stat)); - pfe->fentry.st_mode = S_IFDIR; - npos++; - pfe = getfileentry(frame, npos); - // create ".." entry when not in root dir - strcpy(pfe->name,".."); - memset(&pfe->fentry, 0, sizeof(struct stat)); - pfe->fentry.st_mode = S_IFDIR; - npos++; - } - while((dentry = readdir(dp)) != NULL && npos < finfo[frame].count) - { - if (strcmp(dentry->d_name,".") == 0) - continue; - if (strcmp(dentry->d_name,"..") == 0) - continue; - pfe = getfileentry(frame, npos); - strcpy(pfe->name,dentry->d_name); - sprintf(fullfile,"%s%s",finfo[frame].path,pfe->name); - lstat(fullfile,&(pfe->fentry)); - if (!((S_ISDIR(pfe->fentry.st_mode)) || (S_ISLNK(pfe->fentry.st_mode)))) - { - finfo[frame].size+= pfe->fentry.st_size; - } - if ((selmode == SELECT_UPDIR) && (strcmp(pfe->name,selentry) == 0) && (frame==curframe)) - { - finfo[frame].selected = npos; - strcpy(szSel,GetSelected(frame)->name); - } - npos++; - } - closedir(dp); - } - cursort = finfo[frame].sort; - sortframe(frame, szSel); - - - -} - -/****************************************************************************** - * DoCopy * - ******************************************************************************/ - -int DoCopy(struct fileentry* pfe, int typ, int checktype, char* szZipCommand) -{ - int i = 1; - char action[512], szFullFile[1000], tp; - char szNew[FILENAME_MAX]; - - int check = CheckOverwrite(pfe, checktype, szNew); - if (check < 0 || check == SKIP) return check; - - if (finfo[curframe].ftpconn != NULL) - { - char szMessage[400],buf[512], szMessage2[400], xbuf[FTPBUFFER_SIZE]; - sprintf(szMessage,msg[MSG_COPY_PROGRESS*NUM_LANG+language], pfe->name, finfo[1-curframe].path); - MessageBox(szMessage,"",NOBUTTON); - - - struct sockaddr_in s_inlist; - long size = 0, r, rg = 0; - memcpy(&s_inlist,&finfo[curframe].s_in,sizeof(struct sockaddr_in)); - - FTPcmd(curframe, "TYPE A", NULL, buf); - - if (FTPcmd(curframe, "SIZE ", pfe->name, buf) == 213) size = atol(buf+4); - else - { - sprintf(szMessage, msg[MSG_FTP_ERROR*NUM_LANG+language],"SIZE ",pfe->name); - MessageBox(szMessage,buf,OK); - return check; - } - - FTPcmd(curframe, "TYPE I", NULL, buf); - - if (FTPcmd(curframe, "PASV", NULL, buf) != 227) - { - sprintf(szMessage, msg[MSG_FTP_ERROR*NUM_LANG+language],"PASV",""); - MessageBox(szMessage,buf,OK); - return check; - } - sprintf(szFullFile,"%s%s",finfo[1-curframe].path,szNew); - FILE* fnewFile = NULL; - struct stat st; - if ((lstat(szFullFile,&st) != -1) && (st.st_size > 0)) - { - // append to downloaded file - sprintf(szMessage,msg[MSG_APPENDDOWNLOAD*NUM_LANG+language], szNew); - int res = MessageBox(szMessage,"",YESNOCANCEL); - switch (res) - { - case YES: - { - char szsize[50]; - sprintf(szsize, "%lld", st.st_size); - if (FTPcmd(curframe,"REST", szsize, buf) == 350) { - size -= st.st_size; - fnewFile = fopen(szFullFile,"a"); - } - else - { - sprintf(szMessage, msg[MSG_FTP_ERROR*NUM_LANG+language],"REST ",szsize); - MessageBox(szMessage,buf,OK); - return check; - } - break; - } - case NO: - fnewFile = fopen(szFullFile,"w"); - break; - case CANCEL: - return check; - } - } - else - fnewFile = fopen(szFullFile,"w"); - - if (fnewFile == NULL) - { - sprintf(szMessage, msg[MSG_FTP_ERROR*NUM_LANG+language],"RETR ",pfe->name); - MessageBox(szMessage,"open file failure",OK); - return check; - } - - - char* s = strrchr(buf, ','); - *s = 0; - int port = atoi(s+1); - s = strrchr(buf, ','); - port += atoi(s+1) * 256; - s_inlist.sin_port = htons(port); - int sControl = socket(AF_INET, SOCK_STREAM, 0); - connect(sControl, (struct sockaddr *)&s_inlist, sizeof(struct sockaddr_in)); - FILE* fData = fdopen(sControl, "r+"); - if (FTPcmd(curframe, "RETR ", pfe->name, buf) > 150) - { - sprintf(szMessage, msg[MSG_FTP_ERROR*NUM_LANG+language],"RETR ",pfe->name); - MessageBox(szMessage,buf,OK); - fclose(fnewFile); - return check; - } - if (fData == NULL) - { - sprintf(szMessage, msg[MSG_FTP_ERROR*NUM_LANG+language],"RETR ",pfe->name); - MessageBox(szMessage,"open stream failure",OK); - fclose(fnewFile); - return check; - } - do - { - sprintf(szMessage,msg[MSG_COPY_PROGRESS*NUM_LANG+language], pfe->name, finfo[1-curframe].path); - sprintf(szMessage2,"%lu/%lu Bytes (%d %%)", rg,size, (int)((((double)rg)/size)*100)); - if (MessageBox(szMessage,szMessage2,CANCELRUN) == CANCEL) - { - if (MessageBox(msg[MSG_CANCELDOWNLOAD*NUM_LANG+language],pfe->name,OKCANCEL) == OK) - { - fclose(fnewFile); - fclose(fData); - - FTPcmd(curframe, NULL, NULL, buf); - return check; - } - } - - r = 0; - do - { - clearerr(fData); - r += fread((char *)xbuf + r, 1, FTPBUFFER_SIZE-2 - r, fData); - } - while (r < FTPBUFFER_SIZE-2 && r+rg < size && ferror(fData) && errno == EINTR); -// r = read (sControl,xbuf,FTPBUFFER_SIZE-2); - - rg += r; -// if (ferror(fData) || (feof(fData) && (rg < size)) || (r == 0)) - if (((rg < size) && (r == 0))|| (r == -1) ) - { - sprintf(szMessage, msg[MSG_FTP_ERROR*NUM_LANG+language],"RETR ",pfe->name); - MessageBox(szMessage,"reading stream failure",OK); - break; - } - if (fwrite(xbuf,1,r,fnewFile) != r) - { - sprintf(szMessage, msg[MSG_FTP_ERROR*NUM_LANG+language],"RETR ",pfe->name); - MessageBox(szMessage,"writing file failure",OK); - break; - - } - - } - while (rg < size); - fclose(fnewFile); - fclose(fData); - - if (FTPcmd(curframe, NULL, NULL, buf) != 226) - { - sprintf(szMessage, msg[MSG_FTP_ERROR*NUM_LANG+language],"RETR",pfe->name); - MessageBox(szMessage,buf,OK); - return check; - } - } - else if (finfo[curframe].zipfile[0] != 0x00) - { - if (tmpzipdir[0] == 0x00) - while(1) - { - char szMessage[400]; - sprintf(szMessage ,msg[MSG_EXTRACT*NUM_LANG+language], finfo[curframe].zipfile); - MessageBox(szMessage,"",NOBUTTON); - - sprintf(tmpzipdir,"ziptmp%d",i); - if (FindFile(1-curframe,tmpzipdir) == NULL) - { - sprintf(action,"mkdir -p \"%s%s\"",finfo[1-curframe].path, tmpzipdir); - DoExecute(action, SHOW_NO_OUTPUT); - break; - } - i++; - } - int zlen = strlen(szZipCommand); - if (zlen == 0) - { - switch(finfo[curframe].ziptype) - { - case GZIP : tp = 'z'; break; - case BZIP2 : tp = 'j'; break; - case COMPRESS : tp = 'Z'; break; - case TAR : tp = ' '; break; - default: return check; - } - sprintf(szZipCommand,"tar -x%c -f \"%s%s\" -C \"%s%s\"" - ,tp - ,finfo[curframe].path - ,finfo[curframe].zipfile - ,finfo[1-curframe].path - ,tmpzipdir); - zlen = strlen(szZipCommand); - - } - if (S_ISDIR(pfe->fentry.st_mode)) - { - struct zipfileentry *pzfe = finfo[curframe].allziplist; - while (pzfe != NULL) - { - if (zlen == 0) - { - switch(finfo[curframe].ziptype) - { - case GZIP : tp = 'z'; break; - case BZIP2 : tp = 'j'; break; - case COMPRESS : tp = 'Z'; break; - case TAR : tp = ' '; break; - default: return check; - } - sprintf(szZipCommand,"tar -x%c -f \"%s%s\" -C \"%s%s\"" - ,tp - ,finfo[curframe].path - ,finfo[curframe].zipfile - ,finfo[1-curframe].path - ,tmpzipdir); - zlen = strlen(szZipCommand); - - } - - sprintf(szFullFile,"%s%s/",finfo[curframe].zippath,szNew); - if (strncmp(pzfe->name,szFullFile,strlen(szFullFile))== 0) - { - int dlen = strlen(pzfe->name)+2; - if (dlen + zlen >= commandsize) - { - DoExecute(szZipCommand, SHOW_NO_OUTPUT); - szZipCommand[0]=0x00; - zlen = strlen(szZipCommand); - } - else - { - sprintf(szFullFile," \"%s\"",(char*)(pzfe->name+1)); - strcat(szZipCommand,szFullFile); - } - } - pzfe = pzfe->next; - } - - } - int elen = strlen(pfe->name)+strlen(finfo[curframe].zippath)+2; - if (elen + zlen >= commandsize) - { - DoExecute(szZipCommand, SHOW_NO_OUTPUT); - szZipCommand[0]=0x00; - } - else - { - sprintf(szFullFile," \"%s%s\"",(char*)(finfo[curframe].zippath+1),szNew); - strcat(szZipCommand,szFullFile); - } - } - else - { - if (typ != HIDDEN) - { - char szMessage[400]; - sprintf(szMessage,msg[MSG_COPY_PROGRESS*NUM_LANG+language], pfe->name, finfo[1-curframe].path); - MessageBox(szMessage,"",NOBUTTON); - } - sprintf(action,"cp -dpR \"%s%s\" \"%s%s\"%s",finfo[curframe].path,pfe->name, finfo[1-curframe].path,szNew,typ == HIDDEN ? " &" : ""); - DoExecute(action, SHOW_NO_OUTPUT); - } - return check; -} - -/****************************************************************************** - * DoZipCopyEnd * - ******************************************************************************/ - -void DoZipCopyEnd(char* szZipCommand) -{ - if (finfo[curframe].zipfile[0] != 0x00 && finfo[curframe].ftpconn == NULL) - { - int zlen = strlen(szZipCommand); - if (zlen > 0) DoExecute(szZipCommand, SHOW_NO_OUTPUT); - sprintf(szZipCommand,"mv -f \"%s%s%s\"* \"%s\"",finfo[1-curframe].path,tmpzipdir,finfo[curframe].zippath, finfo[1-curframe].path); - DoExecute(szZipCommand, SHOW_NO_OUTPUT); - sprintf(szZipCommand,"rm -f -r \"%s%s\"",finfo[1-curframe].path,tmpzipdir); - DoExecute(szZipCommand, SHOW_NO_OUTPUT); - } -} -/****************************************************************************** - * DoMove * - ******************************************************************************/ - -int DoMove(struct fileentry* pfe, int typ, int checktype) -{ - char action[1000]; - char szMessage[400]; - char szNew[FILENAME_MAX]; - - - int check = CheckOverwrite(pfe, checktype, szNew); - if (check < 0 || check == SKIP) return check; - - if (typ != HIDDEN) - { - sprintf(szMessage,msg[MSG_MOVE_PROGRESS*NUM_LANG+language], pfe->name, finfo[1-curframe].path, szNew); - MessageBox(szMessage,"",NOBUTTON); - } - sprintf(action,"mv -f \"%s%s\" \"%s%s\"%s",finfo[curframe].path,pfe->name, finfo[1-curframe].path,szNew,typ == HIDDEN ? " &":""); - DoExecute(action, SHOW_NO_OUTPUT); - return check; -} -/****************************************************************************** - * DoViewFile * - ******************************************************************************/ - -void DoViewFile() -{ - char action[4000]; -// FILE* pFile; - struct fileentry* pfe = GetSelected(curframe); -/* if (pfe->fentry.st_size >= FILEBUFFER_SIZE) - { - if (finfo[curframe].zipfile[0] != 0x00) - { - sprintf(action,"tar -x%cO -f \"%s%s\" \"%s%s\"",finfo[curframe].ziptype == GZIP ? 'z' :'j',finfo[curframe].path,finfo[curframe].zipfile,(char*)(finfo[curframe].zippath+1),pfe->name); - pFile = OpenPipe(action); - } - else - { - sprintf(action,"%s%s",finfo[curframe].path, pfe->name); - pFile = fopen(action,"r"); - } - if (pFile != NULL) - { - ShowFile(pFile, pfe->name); - fclose(pFile); - } - } - else -*/ - { - if (finfo[curframe].zipfile[0] != 0x00) - { - sprintf(action,"tar -x%cO -f \"%s%s\" \"%s%s\" > /tmp/tuxcom.out",finfo[curframe].ziptype == GZIP ? 'z' :'j',finfo[curframe].path,finfo[curframe].zipfile,(char*)(finfo[curframe].zippath+1),pfe->name); - DoExecute(action, SHOW_NO_OUTPUT); - DoEditFile("/tmp/tuxcom.out",pfe->name,NO); - - } - else - { - sprintf(action,"%s%s",finfo[curframe].path, pfe->name); - DoEditFile(action,action,NO); - } - } - -} - -/****************************************************************************** - * DoEditFile * - ******************************************************************************/ -void InsertText(char* pStart, char* pEnd,char* szText, int sel, int* pcount) -{ - int oldlen = (pEnd ? pEnd-pStart: strlen(pStart)); - int newlen = strlen(szText); - if (pEnd && szText[newlen-1] != '\n') {szText[newlen] = '\n'; newlen++;} - int movlen = (pEnd ? (FILEBUFFER_SIZE-newlen <= strlen(pEnd) ? FILEBUFFER_SIZE-newlen-1 : strlen(pEnd)) : 0); - int step = (sel > 0 && (*(pStart-1) != '\n') ? 1 : 0)+ (szText[newlen-1] != '\n' ? 1 : 0); - if (pEnd && (oldlen != newlen+step) && movlen > 0) - memmove((void*)(pStart+newlen+step),pEnd,movlen); - if (sel > 0 && (*(pStart-1) != '\n')) {*pStart = '\n'; pStart++; (*pcount)++;} - strncpy(pStart,szText,newlen); - *(pStart+newlen+step+movlen) = 0x00; -} -void DoEditFile(char* szFile, char* szTitle, int writable) -{ - FILE* pFile = fopen(szFile,"r"); - char* szFileBuffer = (char*)malloc(FILEBUFFER_SIZE); - szFileBuffer [0]= 0x00; - - char *p = szFileBuffer, *p1, *pcur = szFileBuffer, *pStart = szFileBuffer, *pStop = NULL, *pMarkStart = NULL,*pMarkStop = NULL, *pMark = NULL; - char szInputBuffer[1001]; - char szLineNumber[20]; - int count = 0, curcount = 0, totalcount = 0, selstart = -1, selstop = -1; - int changed = 0; - int readall = NO; - int offset; - long filepos = 0; - - struct stat st; - - offset = 0; - memset(szFileBuffer,0,FILEBUFFER_SIZE); - while( fgets( p, FILEBUFFER_SIZE - offset, pFile ) ) - { - offset+=strlen(p); - count++; - if (offset >= FILEBUFFER_SIZE ) break; - p = (char*)(p+strlen(p)); - } - lstat(szFile,&st); - - if (st.st_size < FILEBUFFER_SIZE ) count++; - totalcount = count; - - - if (st.st_size < FILEBUFFER_SIZE) - { - readall = YES; - } - - int i,row = 0, sel = 0, presel=0, strsize, markmode=0; - - - - while( 1 ) - { - // Render output window - RenderBox( 0, 0 , viewx , viewy-MENUSIZE , FILL, trans_map[curvisibility]); - RenderBox( 0, 0 , BORDERSIZE, viewy-MENUSIZE , FILL, WHITE); - RenderBox(viewx-BORDERSIZE, 0 , viewx , viewy-MENUSIZE , FILL, WHITE); - RenderBox( 0, 0 , viewx , BORDERSIZE , FILL, WHITE); - RenderBox( 0, BORDERSIZE+FONTHEIGHT_BIG , viewx , 2*BORDERSIZE+FONTHEIGHT_BIG, FILL, WHITE); - RenderBox( 0, viewy-BORDERSIZE- MENUSIZE , viewx , viewy-MENUSIZE , FILL, WHITE); - - p = szFileBuffer; - - if (st.st_size >= FILEBUFFER_SIZE) // File is to big to fit in Buffer, we have to read next/previous part - { - if (sel+framerows >= count && !feof(pFile)) // read next part - { - sel = sel-presel; - row = sel; - curcount += presel; - filepos = ftell(pFile); - filepos-= (long)((szFileBuffer+FILEBUFFER_SIZE-pStart)-1); - fseek(pFile,filepos,SEEK_SET); - count = 0; - p = szFileBuffer; - pcur = szFileBuffer; - memset(szFileBuffer,0,FILEBUFFER_SIZE); - offset = 0; - while( fgets( p, FILEBUFFER_SIZE-offset, pFile ) ) - { - offset+=strlen(p); - count++; - if (offset >= FILEBUFFER_SIZE ) break; - p = (char*)(p+strlen(p)); - } - if (readall == NO) totalcount = curcount + count; - if (feof(pFile)) // EOF reached - readall = YES; - - } - if ((sel < 0 ) && (curcount > 0)) // read previous part - { - filepos = ftell(pFile); - filepos-= (long)(strlen(szFileBuffer)+((szFileBuffer+FILEBUFFER_SIZE)-pStop)); - - if (filepos < 0 ) filepos = 0; - - fseek(pFile,filepos,SEEK_SET); - if (filepos > 0) fgets( szFileBuffer, FILEBUFFER_SIZE, pFile ); // ignore first (probably incomplete) line - count = 0; - p = szFileBuffer; - pcur = szFileBuffer; - memset(szFileBuffer,0,FILEBUFFER_SIZE); - offset = 0; - while( fgets( p, FILEBUFFER_SIZE-offset, pFile ) ) - { - offset+=strlen(p); - count++; - if (offset >= FILEBUFFER_SIZE ) break; - p = (char*)(p+strlen(p)); - } - if (filepos == 0) - { - sel = curcount + sel ; - curcount = 0; - } - else - { - sel = count + sel - framerows -1; - curcount -= (count - framerows); - } - } - } - - - - if (sel >= count) sel = count-1; - if (sel < 0 ) sel = 0; - if (sel < row) row = sel; - if (sel > row+(framerows-2)) row = sel-(framerows-2); - presel = sel; - if (writable == NO) row = sel; - for (i =0; i < row; i++) - { - p1=strchr(p,'\n'); - if (p1 == NULL) break; - p= p1+1; - } - sprintf(szLineNumber,msg[MSG_LINE*NUM_LANG+language],curcount+sel+1, totalcount,(readall == YES ? "":"+")); - strsize = GetStringLen(szLineNumber, BIG); - RenderString(szTitle ,2*BORDERSIZE , BORDERSIZE+FONTHEIGHT_BIG-FONT_OFFSET_BIG , viewx-5*BORDERSIZE-strsize, LEFT, BIG, WHITE); - RenderString(szLineNumber,viewx-2*BORDERSIZE-strsize , BORDERSIZE+FONTHEIGHT_BIG-FONT_OFFSET_BIG , strsize+BORDERSIZE , RIGHT, BIG, WHITE); - - if ( p ) - { - pStart = p; - for (i =0; i < framerows; i++) - { - if ((sel == row + i)&& writable!=NO) - { - pcur = p; - RenderBox(BORDERSIZE, 2*BORDERSIZE+FONTHEIGHT_BIG+i*FONTHEIGHT_SMALL , viewx- BORDERSIZE , 2*BORDERSIZE+FONTHEIGHT_BIG+(i+1)*FONTHEIGHT_SMALL, FILL, BLUE2); - if (markmode) - { - if (pcur >= pMark) - { - pMarkStart = pMark; - pMarkStop = pcur; - } - else - { - pMarkStop = pMark; - pMarkStart = pcur; - } - } - } - if (pMarkStop != NULL && pMarkStart != NULL && pMarkStop < pMarkStart) - { - char* ptmp = pMarkStart; - pMarkStart = pMarkStop; - pMarkStop = ptmp; - } - if (pMarkStop != NULL && pMarkStart != NULL && pMarkStart <= p && pMarkStop >= p) - RenderBox(BORDERSIZE, 2*BORDERSIZE+FONTHEIGHT_BIG+i*FONTHEIGHT_SMALL , viewx- BORDERSIZE , 2*BORDERSIZE+FONTHEIGHT_BIG+(i+1)*FONTHEIGHT_SMALL, FILL, (sel == row + i)? GRAY : GRAY2); - - RenderString(p,2*BORDERSIZE, 2*BORDERSIZE+FONTHEIGHT_BIG+(i+1)*FONTHEIGHT_SMALL -FONT_OFFSET, viewx-4*BORDERSIZE, LEFT, SMALL, WHITE); - p1=strchr(p,'\n'); - if (p1 == NULL) - { - i++; - if ((sel == row + i) && writable!=NO) - { - pcur+=strlen(pcur); - RenderBox(BORDERSIZE, 2*BORDERSIZE+FONTHEIGHT_BIG+i*FONTHEIGHT_SMALL , viewx- BORDERSIZE , 2*BORDERSIZE+FONTHEIGHT_BIG+(i+1)*FONTHEIGHT_SMALL, FILL, BLUE2); - } - break; - } - p = p1+1; - } - pStop = p; - memcpy(lfb, lbb, fix_screeninfo.line_length*var_screeninfo.yres); - while (GetRCCode(RC_NORMAL) == 0); - switch (rccode) - { - case RC_3: - if (writable == YES) - { - if (markmode) - { - selstop = sel; - pMarkStop = pcur; - pMark = NULL; - } - else - { - selstart = sel; - pMarkStart = pcur; - pMark = pcur; - } - markmode=1-markmode; - RenderMenuLine(markmode ? ACTION_VIEW-1:-1, EDITOR); - } - break; - case RC_5: - if (writable == YES) - { - if (markmode) - { - selstop = sel; - pMarkStop = pcur; - markmode=1-markmode; - RenderMenuLine(-1, EDITOR); - } - else - { - if (pMarkStart && pMarkStop) - { - p1 = strchr(pMarkStop,'\n'); - if (p1 == NULL) p1 = pMarkStop+strlen(pMarkStop); - char * pTmpBuf = (char*)malloc(p1-pMarkStart+2); // temporary buffer for marked segment - strncpy(pTmpBuf,pMarkStart, p1-pMarkStart); - *(pTmpBuf+(p1-pMarkStart)) = '\n'; - *(pTmpBuf+(p1-pMarkStart)+1) = 0x00; - InsertText(pcur, pcur,pTmpBuf, sel, &count); - count +=(selstop > selstart ? selstop - selstart : selstart - selstop); - totalcount = count; - free(pTmpBuf); - changed = 1; - } - } - } - break; - case RC_6: - if (writable == YES) - { - if (markmode) - { - selstop = sel; - pMarkStop = pcur; - markmode=1-markmode; - RenderMenuLine(-1, EDITOR); - } - else - { - if (pMarkStart && pMarkStop) - { - p1 = strchr(pMarkStop,'\n'); - if (p1 == NULL) p1 = pMarkStop+strlen(pMarkStop); - char * pTmpBuf = (char*)malloc(p1-pMarkStart+2); // temporary buffer for marked segment - strncpy(pTmpBuf,pMarkStart, p1-pMarkStart); - *(pTmpBuf+(p1-pMarkStart)) = '\n'; - *(pTmpBuf+(p1-pMarkStart)+1) = 0x00; - if (pMarkStart > pcur && *(p1+1) != 0x00) - memmove(pMarkStart,p1+1,FILEBUFFER_SIZE-(p1+1-szFileBuffer)); - int ctmp = count; - InsertText(pcur, pcur,pTmpBuf, sel, &ctmp); - free(pTmpBuf); - if (pMarkStart <= pcur && *(p1+1) != 0x00) - memmove(pMarkStart,p1+1,FILEBUFFER_SIZE-(p1+1-szFileBuffer)); - if (pMarkStart < pcur) sel -= (selstop > selstart ? selstop - selstart : selstart - selstop)+1; - selstop = sel + (selstop > selstart ? selstop - selstart : selstart - selstop); - selstart = sel; - if (pMarkStart < pcur) - { - int marksize = (p1+1-pMarkStart); - pMarkStop = pcur-marksize+(pMarkStop-pMarkStart) + (*(p1+1) != 0x00 ? 1 : 0); - pMarkStart = pcur-marksize; - } - else - { - pMarkStop = pcur+(pMarkStop-pMarkStart); - pMarkStart = pcur; - } - - changed = 1; - } - } - } - break; - case RC_8: - if (writable == YES) - { - if (markmode) - { - selstop = sel; - pMarkStop = pcur; - pMark = NULL; - markmode=1-markmode; - RenderMenuLine(-1, EDITOR); - } - if (pMarkStart && pMarkStop) - { - p1 = strchr(pMarkStop,'\n'); - count -= (selstop > selstart ? selstop - selstart : selstart - selstop)+1; - totalcount = count; - if (p1 == NULL) p1 = pMarkStop+strlen(pMarkStop); - memmove(pMarkStart,p1+1,FILEBUFFER_SIZE-(p1+1-szFileBuffer)); - if (pMarkStart < pcur) sel -= (selstop > selstart ? selstop - selstart : selstart - selstop)+1; - pMarkStart = pMarkStop = NULL; - changed = 1; - } - } - break; - case RC_HOME : - break; - case RC_OK : - { - if (writable == YES) - { - if (markmode) - { - selstop = sel; - pMarkStop = pcur; - pMark = NULL; - markmode = 0; - RenderMenuLine(-1, EDITOR); - break; - } - markmode = 0; - pMarkStart = pMarkStop = NULL; - p1 = strchr(pcur,'\n'); - if (p1) p1++; - int plen = (p1 ? p1-pcur: strlen(pcur)); - strncpy(szInputBuffer,pcur,plen); - szInputBuffer[plen]=0x00; - RenderBox(0, 2*BORDERSIZE+FONTHEIGHT_BIG+(sel-row)*FONTHEIGHT_SMALL-1 , viewx, 2*BORDERSIZE+FONTHEIGHT_BIG+(sel-row+1)*FONTHEIGHT_SMALL+1, GRID, WHITE); - switch (DoEditString(BORDERSIZE,2*BORDERSIZE+FONTHEIGHT_BIG+(sel-row)*FONTHEIGHT_SMALL, viewx- 2*BORDERSIZE ,1000,szInputBuffer,BIG/*SMALL*/,BLUE2, NO)) - { - case RC_OK: - { - InsertText(pcur, p1,szInputBuffer, sel, &count); - changed = 1; - break; - } - default: - rccode = 0; - break; - } - colortool[0] = ACTION_DELLINE ; - colortool[1] = ACTION_INSLINE ; - colortool[2] = ACTION_NOACTION; - colortool[3] = ACTION_TOLINUX ; - RenderMenuLine(-1, EDITOR); - } - else if (writable == SEARCHRESULT) - { - p1 = strchr(pcur,'\n'); - int plen = (p1 ? p1-pcur: strlen(pcur)); - strncpy(szInputBuffer,pcur,plen); - szInputBuffer[plen]=0x00; - char* plast = strrchr(szInputBuffer,'/'); - if (plast != NULL) - { - plast++; - char x = *plast; - *plast=0x00; - strcpy(finfo[curframe].path, szInputBuffer); - *plast = x; - FillDir(curframe,SELECT_NOCHANGE); - SetSelected(curframe,plast); - } - return; - } - else - { - sel+= framerows-1; - if (sel < count) row = sel; - } - break; - } - case RC_UP: - sel--; - break; - case RC_DOWN: - sel++; - break; - case RC_LEFT: - sel-= framerows-1; - if (sel >= 0) row = sel; - break; - case RC_RIGHT: - sel+= framerows-1; - if (sel < count) row = sel; - break; - case RC_PLUS: - sel = 0; - if (curcount >0) - { - fseek(pFile,0,SEEK_SET); - count = 0; - p = szFileBuffer; - pcur = szFileBuffer; - memset(szFileBuffer,0,FILEBUFFER_SIZE); - offset = 0; - while( fgets( p, FILEBUFFER_SIZE-offset, pFile ) ) - { - offset+=strlen(p); - count++; - if (offset >= FILEBUFFER_SIZE ) break; - p = (char*)(p+strlen(p)); - } - curcount = 0; - } - break; - case RC_MINUS: - sel = totalcount; - break; - case RC_RED: - if (writable == YES) - { - p1 = strchr(pcur,'\n'); - if (p1) - { - memmove(pcur,p1+1,FILEBUFFER_SIZE-(pcur-szFileBuffer)-1); - } - else - *pcur = 0x00; - if (count > 0 ) count--; - if (totalcount > 0 ) totalcount--; - changed = 1; - } - break; - case RC_GREEN: - if (writable == YES) - { - memmove(pcur+1,pcur,FILEBUFFER_SIZE-(pcur-szFileBuffer)-1); - *pcur = '\n'; - count++; - totalcount++; - changed = 1; - } - break; - case RC_BLUE: - if (writable == YES) - { - p1 = szFileBuffer; - while (p1) - { - p1 = strchr(p1,'\r'); - if (p1) - { - memmove(p1,p1+1,FILEBUFFER_SIZE-(p1-szFileBuffer)-1); - changed = 1; - } - } - } - break; - } - if (rccode == RC_HOME) - { - if (changed) - { - char szMessage[400]; - sprintf(szMessage,msg[MSG_SAVE*NUM_LANG+language], szFile); - switch (MessageBox(szMessage,"",YESNOCANCEL)) - { - case YES: - fclose(pFile); - pFile = fopen(szFile,"w"); - if (pFile) - { - fputs(szFileBuffer,pFile); - fclose(pFile); - } - free(szFileBuffer); - rccode = -1; - return; - case NO: - rccode = -1; - fclose(pFile); - free(szFileBuffer); - return; - } - } - else - { - rccode = -1; - fclose(pFile); - free(szFileBuffer); - return; - } - - } - } - } - rccode = -1; - fclose(pFile); - free(szFileBuffer); -} -/****************************************************************************** - * DoTaskManager * - ******************************************************************************/ - -void DoTaskManager() -{ - FILE* pFile = OpenPipe("ps -aux"); - char* szFileBuffer = (char*)malloc(FILEBUFFER_SIZE); - szFileBuffer [0]= 0x00; - char *p = szFileBuffer, *p1, *p2, *pcur = szFileBuffer; - char szMsg[2000], procname[256], prid[20]="",uid[100]=""; - int offset = 0, count = 0; - if (pFile == NULL) - { - MessageBox(MSG_VERSION,MSG_COPYRIGHT,OK); - return; - } - memset(szFileBuffer,0,FILEBUFFER_SIZE); - while( fgets( p, FILEBUFFER_SIZE - offset, pFile ) ) - { - if (offset == 0) // ignore first line - { - offset+=strlen(p); - continue; - } - - - count++; - offset+=strlen(p); - if (offset >= FILEBUFFER_SIZE ) break; - p = (char*)(p+strlen(p)); - } - fclose(pFile); - - - int i,row = 0, sel = 0, strsize; - - colortool[0] = ACTION_KILLPROC; - colortool[1] = ACTION_NOACTION; - colortool[2] = ACTION_NOACTION; - colortool[3] = ACTION_NOACTION; - memset(tool, ACTION_NOACTION, sizeof(tool)); - - RenderMenuLine(-1, NO); - - - while( 1 ) - { - // Render output window - RenderBox( 0, 0 , viewx , viewy-MENUSIZE , FILL, trans_map[curvisibility]); - RenderBox( 0, 0 , BORDERSIZE, viewy-MENUSIZE , FILL, WHITE); - RenderBox(viewx-BORDERSIZE, 0 , viewx , viewy-MENUSIZE , FILL, WHITE); - RenderBox( 0, 0 , viewx , BORDERSIZE , FILL, WHITE); - RenderBox( 0, BORDERSIZE+FONTHEIGHT_BIG , viewx , 2*BORDERSIZE+FONTHEIGHT_BIG, FILL, WHITE); - RenderBox( 0, viewy-BORDERSIZE- MENUSIZE , viewx , viewy-MENUSIZE , FILL, WHITE); - - p = szFileBuffer; - - if (sel < 0 ) sel = 0; - if (sel >= count) sel = count-1; - if (sel < row) row = sel; - if (sel > row+(framerows-4)) row = sel-(framerows-4); - for (i =0; i < row; i++) - { - p1=strchr(p,'\n'); - if (p1 == NULL) break; - p= p1+1; - } - strsize = GetStringLen(MSG_COPYRIGHT, BIG); - RenderString(MSG_VERSION ,2*BORDERSIZE , BORDERSIZE+FONTHEIGHT_BIG-FONT_OFFSET_BIG , viewx-5*BORDERSIZE-strsize, LEFT, BIG, WHITE); - RenderString(MSG_COPYRIGHT,viewx-2*BORDERSIZE-strsize , BORDERSIZE+FONTHEIGHT_BIG-FONT_OFFSET_BIG , strsize+BORDERSIZE , RIGHT, BIG, WHITE); - RenderString(msg[MSG_PROCESSID *NUM_LANG+language] , 2*BORDERSIZE , 2*BORDERSIZE+FONTHEIGHT_BIG+FONTHEIGHT_SMALL-FONT_OFFSET, viewx/6, RIGHT, SMALL, WHITE); - RenderString(msg[MSG_PROCESSUSER*NUM_LANG+language] , 5*BORDERSIZE + viewx/6 , 2*BORDERSIZE+FONTHEIGHT_BIG+FONTHEIGHT_SMALL-FONT_OFFSET, viewx/6, LEFT , SMALL, WHITE); - RenderString(msg[MSG_PROCESSNAME*NUM_LANG+language] , viewx/3 , 2*BORDERSIZE+FONTHEIGHT_BIG+FONTHEIGHT_SMALL-FONT_OFFSET, viewx/3, LEFT , SMALL, WHITE); - RenderBox( 0, BORDERSIZE+FONTHEIGHT_BIG + 2*FONTHEIGHT_SMALL-FONT_OFFSET , viewx , 2*BORDERSIZE+FONTHEIGHT_BIG + 2*FONTHEIGHT_SMALL-FONT_OFFSET, FILL, WHITE); - - if ( p ) - { - for (i =0; i < framerows-2; i++) - { - if (sel == row + i) - { - pcur = p; - RenderBox(BORDERSIZE, 2*BORDERSIZE+FONTHEIGHT_BIG+2*FONTHEIGHT_SMALL+i*FONTHEIGHT_SMALL , viewx- BORDERSIZE , 2*BORDERSIZE+FONTHEIGHT_BIG+2*FONTHEIGHT_SMALL+(i+1)*FONTHEIGHT_SMALL, FILL, BLUE2); - } - if (*p == 0x00) break; - sscanf(p,"%s%s",prid,uid); - - memset(procname,0,256); - strncpy(procname,(char*)(p+26),255); - p2=strchr(procname,'\n'); - if (p2 != NULL) *p2 = 0x00; - RenderString( prid,2*BORDERSIZE , 2*BORDERSIZE+FONTHEIGHT_BIG+2*FONTHEIGHT_SMALL+(i+1)*FONTHEIGHT_SMALL -FONT_OFFSET, viewx/6 , RIGHT, SMALL, WHITE); - RenderString( uid,5*BORDERSIZE+ viewx/6 , 2*BORDERSIZE+FONTHEIGHT_BIG+2*FONTHEIGHT_SMALL+(i+1)*FONTHEIGHT_SMALL -FONT_OFFSET, viewx/6 , LEFT , SMALL, WHITE); - RenderString(procname, viewx/3 , 2*BORDERSIZE+FONTHEIGHT_BIG+2*FONTHEIGHT_SMALL+(i+1)*FONTHEIGHT_SMALL -FONT_OFFSET, 2*viewx/3 , LEFT , SMALL, WHITE); - p1=strchr(p,'\n'); - if (p1 == NULL) - { - i++; - if (sel == row + i) - { - pcur+=strlen(pcur); - RenderBox(BORDERSIZE, 2*BORDERSIZE+FONTHEIGHT_BIG+2*FONTHEIGHT_SMALL+i*FONTHEIGHT_SMALL , viewx- BORDERSIZE , 2*BORDERSIZE+FONTHEIGHT_BIG+2*FONTHEIGHT_SMALL+(i+1)*FONTHEIGHT_SMALL, FILL, BLUE2); - } - break; - } - p = p1+1; - } - RenderBox( viewx/6 +3*BORDERSIZE, BORDERSIZE+FONTHEIGHT_BIG , viewx/6 + 4*BORDERSIZE, viewy-MENUSIZE , FILL, WHITE); - RenderBox( viewx/3 -2*BORDERSIZE, BORDERSIZE+FONTHEIGHT_BIG , viewx/3 - BORDERSIZE, viewy-MENUSIZE , FILL, WHITE); - memcpy(lfb, lbb, fix_screeninfo.line_length*var_screeninfo.yres); - while (GetRCCode(RC_NORMAL) == 0); - switch (rccode) - { - case RC_HOME : - break; - case RC_UP: - sel--; - break; - case RC_DOWN: - sel++; - break; - case RC_LEFT: - sel-= framerows-3; - if (sel >= 0) row = sel; - break; - case RC_RIGHT: - sel+= framerows-3; - if (sel < count) row = sel; - break; - case RC_PLUS: - sel = 0; - break; - case RC_MINUS: - sel = count; - break; - case RC_RED: - sscanf(pcur,"%s%s",prid,uid); - memset(procname,0,256); - strncpy(procname,(char*)(pcur+26),255); - p2=strchr(procname,'\n'); - if (p2 != NULL) *p2 = 0x00; - sprintf(szMsg,msg[MSG_KILLPROC*NUM_LANG+language],procname); - if (MessageBox(szMsg, info[INFO_PROC*NUM_LANG+language],OKCANCEL) == OK) - { - char szCmd[2000]; - sprintf(szCmd,"kill -9 %s", prid); - system(szCmd); - FILE* pFile = OpenPipe("ps -aux"); - if (pFile == NULL) - { - MessageBox(MSG_VERSION,MSG_COPYRIGHT,OK); - return; - } - sel = 0; - p = szFileBuffer; - count = 0; - memset(szFileBuffer,0,FILEBUFFER_SIZE); - while( fgets( p, FILEBUFFER_SIZE - offset, pFile ) ) - { - count++; - if (offset == 0) // ignore first line - { - offset+=strlen(p); - continue; - } - offset+=strlen(p); - count++; - if (offset >= FILEBUFFER_SIZE ) break; - p = (char*)(p+strlen(p)); - } - fclose(pFile); - } - break; - - } - if (rccode == RC_HOME) - { - rccode = -1; - free(szFileBuffer); - return; - } - } - } - free(szFileBuffer); - rccode = -1; -} -/****************************************************************************** - * DoExecute * - ******************************************************************************/ - -void DoExecute(char* szAction, int showoutput) -{ - printf("executing: %s\n", szAction); - - if (showoutput == SHOW_NO_OUTPUT) - { - int x = system(szAction); - printf("result %d \n",x); - - if (x != 0) - MessageBox("Error",strerror(errno),OK); - } - else - { - FILE* pipe = OpenPipe(szAction); - if (pipe== NULL) - { - printf("tuxcom: could not open pipe\n"); - char message[1000]; - sprintf(message,msg[MSG_EXEC_NOT_POSSIBLE*NUM_LANG+language],szAction); - MessageBox(message,"",OK); - - return; - } -// ShowFile(pipe, szAction); - fclose(pipe); - DoEditFile("/tmp/tuxcom.out", (showoutput== SHOW_SEARCHRESULT ? info[INFO_SEARCH2*NUM_LANG+language] : szAction) ,(showoutput== SHOW_SEARCHRESULT ? SEARCHRESULT : NO)); - } - rccode = -1; -} -/****************************************************************************** - * CheckZip * - ******************************************************************************/ - -int CheckZip(char* szName) -{ - int len = strlen(szName); - if (len < 4) return -1; - if (strcmp((char*)(szName+len-4),".tar") == 0) return TAR; - if (strcmp((char*)(szName+len-4),".ftp") == 0) return FTP; - if (len < 6) return -1; - if (strcmp((char*)(szName+len-6),".tar.Z") == 0) return COMPRESS; - if (len < 7) return -1; - if (strcmp((char*)(szName+len-7),".tar.gz") == 0) return GZIP; - if (len < 8) return -1; - if (strcmp((char*)(szName+len-8),".tar.bz2") == 0) return BZIP2; - return -1; -} -/****************************************************************************** - * ReadZip * - ******************************************************************************/ - -void ReadZip(int typ) -{ - if (typ == FTP) { OpenFTP(); return;} - MessageBox(msg[MSG_READ_ZIP_DIR*NUM_LANG+language],"",NOBUTTON); - FILE* pipe; - char szAction[400], szLine[400], name[FILENAME_MAX]; - char* p; - char d,r,w,x; - struct zipfileentry* pzfe1 = NULL, *pzfe2 = NULL; - long size=0; - - ClearZipEntries(curframe); - if (typ == GZIP) - sprintf(szAction,"tar -tzv -f \"%s%s\"",finfo[curframe].path,GetSelected(curframe)->name); - else if (typ == BZIP2) - sprintf(szAction,"tar -tjv -f \"%s%s\"",finfo[curframe].path,GetSelected(curframe)->name); - else if (typ == COMPRESS) - sprintf(szAction,"tar -tZv -f \"%s%s\"",finfo[curframe].path,GetSelected(curframe)->name); - else if (typ == TAR) - sprintf(szAction,"tar -tv -f \"%s%s\"",finfo[curframe].path,GetSelected(curframe)->name); - else - return; - strcpy(finfo[curframe].zipfile,GetSelected(curframe)->name); - strcpy(finfo[curframe].zippath,"/"); - finfo[curframe].ziptype = typ; - pipe = OpenPipe(szAction); - if (pipe== NULL) - { - printf("tuxcom: could not open pipe\n"); - char message[1000]; - sprintf(message,msg[MSG_EXEC_NOT_POSSIBLE*NUM_LANG+language],szAction); - MessageBox(message,"",OK); - - return; - } - while( fgets( szLine, 400, pipe ) ) - { - p=strchr(szLine,'\n'); - if ( p ) - *p=0; - sscanf(szLine,"%c%c%c%c%*s%*s%lu%*s%*s%s",&d,&r,&w,&x,&size,name); - - - if (name[0] != 0x00) - { - pzfe1 = malloc(sizeof(struct zipfileentry)); - - if (name[strlen(name)-1] == '/') name[strlen(name)-1]=0x00; - if (name[0] != '/') - sprintf(pzfe1->name,"/%s",name); - else - strcpy(pzfe1->name,name); - pzfe1->next = NULL; - memset(&pzfe1->fentry, 0, sizeof(struct stat)); - pzfe1->fentry.st_size = size; - if (d == 'd') { pzfe1->fentry.st_mode |= S_IFDIR;pzfe1->fentry.st_size = 0;} - if (r == 'r') pzfe1->fentry.st_mode |= S_IRUSR; - if (w == 'w') pzfe1->fentry.st_mode |= S_IWUSR; - if (x == 'x') pzfe1->fentry.st_mode |= S_IXUSR; - - if (pzfe2 == NULL) - finfo[curframe].allziplist = pzfe1; - else - pzfe2->next = pzfe1; - pzfe2 = pzfe1; - } - } - - - fclose(pipe); - -} - -/****************************************************************************** - * OpenFTP * - ******************************************************************************/ - -void OpenFTP() -{ - // read connection info from selected file - FILE *fp; - char *p, *p1; - char line[256]; - char file[FILENAME_MAX]; - char dir [FILENAME_MAX]; - - strcpy(dir,"/"); - strcpy(finfo[curframe].ftpuser,"anonymous"); - strcpy(finfo[curframe].ftppass,"tuxcom"); - finfo[curframe].ftpport = 21; - sprintf(file,"%s%s",finfo[curframe].path,GetSelected(curframe)->name); - fp = fopen( file, "r" ); - if ( !fp ) - { - printf("tuxcom: could not open ftpfile\n"); - } - else - { - while( fgets( line, 128, fp ) ) - { - if ( *line == '#' ) continue; - if ( *line == ';' ) continue; - p=strchr(line,'\n'); - if ( p ) - *p=0; - p=strchr(line,'='); - if ( !p ) - continue; - *p=0; - p++; - p1=strchr(p,'\r'); // für Windows-Nutzer: '\r' überlesen - if (p1 != NULL) *p1 = 0x00; - if ( !strcmp(line,"host") ) strcpy(finfo[curframe].ftphost, p); - else if ( !strcmp(line,"port") ) finfo[curframe].ftpport = atoi(p); - else if ( !strcmp(line,"user") ) strcpy(finfo[curframe].ftpuser, p); - else if ( !strcmp(line,"pass") ) strcpy(finfo[curframe].ftppass, p); - else if ( !strcmp(line,"dir" ) ) strcpy(dir, p); - } - fclose(fp); - } - MessageBox(msg[MSG_FTP_CONN*NUM_LANG+language],finfo[curframe].ftphost,NOBUTTON); - - - // try to connect to ftp-server - struct hostent *he; - char szMessage[400]; - - memset(&finfo[curframe].s_in, 0, sizeof(struct sockaddr_in)); - finfo[curframe].s_in.sin_family = AF_INET; - he = gethostbyname(finfo[curframe].ftphost); - if (he == NULL) - { - MessageBox(msg[MSG_FTP_NOCONN*NUM_LANG+language],finfo[curframe].ftphost,OK); - return; - } - memcpy(&(finfo[curframe].s_in.sin_addr), he->h_addr_list[0], he->h_length); - - finfo[curframe].s_in.sin_port = finfo[curframe].ftpport; - - - int sControl = socket(AF_INET, SOCK_STREAM, 0); - if (connect(sControl, (struct sockaddr *)&finfo[curframe].s_in, sizeof(struct sockaddr_in)) < 0) - { - MessageBox(msg[MSG_FTP_NOCONN*NUM_LANG+language],finfo[curframe].ftphost,OK); - return; - } - sprintf(szMessage, "%s[%s]:%d",finfo[curframe].ftphost,inet_ntoa(finfo[curframe].s_in.sin_addr), ntohs(finfo[curframe].s_in.sin_port)); - MessageBox(msg[MSG_FTP_CONN*NUM_LANG+language],szMessage,NOBUTTON); - - finfo[curframe].ftpconn = fdopen(sControl, "r+"); - if (finfo[curframe].ftpconn == NULL) - { - MessageBox("open stream failure",finfo[curframe].ftphost,OK); - return; - } - char buf[512]; - - - if (FTPcmd(curframe, NULL, NULL, buf) != 220) - { - fclose(finfo[curframe].ftpconn); - finfo[curframe].ftpconn = NULL; - MessageBox(msg[MSG_FTP_NOCONN*NUM_LANG+language],finfo[curframe].ftphost,OK); - return; - } - - switch (FTPcmd(curframe, "USER ", finfo[curframe].ftpuser, buf)) - { - case 230: - break; - case 331: - if (FTPcmd(curframe, "PASS ", finfo[curframe].ftppass, buf) != 230) - { - fclose(finfo[curframe].ftpconn); - finfo[curframe].ftpconn = NULL; - sprintf(szMessage, msg[MSG_FTP_ERROR*NUM_LANG+language],"PASS",""); - MessageBox(szMessage,buf,OK); - return; - } - break; - default: - fclose(finfo[curframe].ftpconn); - finfo[curframe].ftpconn = NULL; - sprintf(szMessage, msg[MSG_FTP_ERROR*NUM_LANG+language],"USER",""); - MessageBox(szMessage,buf,OK); - return; - } - sprintf(finfo[curframe].zippath,"%s%s%s",(dir[0] != '/' ? "/":""), dir, (dir[strlen(dir)-1] != '/' ? "/":"")); - strcpy(finfo[curframe].zipfile,GetSelected(curframe)->name); -} - -/****************************************************************************** - * ReadFTPDir * - ******************************************************************************/ - -void ReadFTPDir(int frame, char* seldir) -{ - if (finfo[frame].ftpconn == NULL) return; - struct zipfileentry * pzfe = finfo[frame].allziplist; - char buf[512], *p, name[FILENAME_MAX]; - char d,r,w,x; - char szMessage[400]; - struct sockaddr_in s_inlist; - struct zipfileentry* pzfe1 = NULL, *pzfe2 = finfo[frame].allziplist; - char szDir[2000]; - sprintf(szDir,"%s.",finfo[frame].zippath); - if (strcmp(seldir,"..") == 0) - { - if (FTPcmd(frame, "CDUP", NULL, buf) != 250) - { - sprintf(szMessage, msg[MSG_FTP_ERROR*NUM_LANG+language],"CDUP",""); - MessageBox(szMessage,buf,OK); - return; - } - } - while (pzfe != NULL) - { - if (strcmp(pzfe->name,szDir) == 0) return; // directory already read - pzfe = pzfe->next; - } - - long size = 0; - memcpy(&s_inlist,&finfo[frame].s_in,sizeof(struct sockaddr_in)); - - MessageBox(msg[MSG_FTP_READDIR*NUM_LANG+language],seldir,NOBUTTON); - - FTPcmd(frame, "TYPE A", NULL, buf); - - if (*seldir != 0x00 && strcmp(seldir,"..") != 0) - { - if (FTPcmd(frame, "CWD ", seldir, buf) != 250) - { - sprintf(szMessage, msg[MSG_FTP_ERROR*NUM_LANG+language],"CWD ",seldir); - MessageBox(szMessage,buf,OK); - return; - } - } - - - if (FTPcmd(frame, "PASV", NULL, buf) != 227) - { - fclose(finfo[frame].ftpconn); - finfo[frame].ftpconn = NULL; - sprintf(szMessage, msg[MSG_FTP_ERROR*NUM_LANG+language],"PASV",""); - MessageBox(szMessage,buf,OK); - return; - } - char* s = strrchr(buf, ','); - *s = 0; - int port = atoi(s+1); - s = strrchr(buf, ','); - port += atoi(s+1) * 256; - s_inlist.sin_port = htons(port); - int sControl = socket(AF_INET, SOCK_STREAM, 0); - connect(sControl, (struct sockaddr *)&s_inlist, sizeof(struct sockaddr_in)); - FILE* fData = fdopen(sControl, "r+"); - - - FTPcmd(frame, "LIST", NULL, buf); - - - if (fData == NULL) - { - sprintf(szMessage, msg[MSG_FTP_ERROR*NUM_LANG+language],"LIST",""); - MessageBox(szMessage,"open stream failure",OK); - return; - } - pzfe1 = malloc(sizeof(struct zipfileentry)); - - strcpy(pzfe1->name,szDir); - pzfe1->next = pzfe2; - memset(&pzfe1->fentry, 0, sizeof(struct stat)); - finfo[frame].allziplist = pzfe1; - pzfe2 = pzfe1; - - do - { - if (fgets(buf, 510,fData) == NULL) break; - p=strchr(buf,'\n'); - if ( p ) - *p=0; - sscanf(buf,"%c%c%c%c%*s%*d%*s%*s%lu%*s%*s%*s%[^\n]s",&d,&r,&w,&x,&size,name); - - - if (name[0] != 0x00) - { - char* pname = name; - while (*pname == ' ') pname++; - while (!isspace(pname[strlen(pname)-1])) pname[strlen(pname)-1] = 0x00; - - if (pname[0] == '/') pname++; - if (pname[strlen(pname)-1] == '/') pname[strlen(pname)-1]=0x00; - if (strcmp(pname,"..") == 0) continue; - pzfe1 = malloc(sizeof(struct zipfileentry)); - sprintf(pzfe1->name,"%s%s",finfo[frame].zippath,pname); - pzfe1->next = pzfe2; - memset(&pzfe1->fentry, 0, sizeof(struct stat)); - pzfe1->fentry.st_size = size; - if (d == 'd') { pzfe1->fentry.st_mode |= S_IFDIR;pzfe1->fentry.st_size = 0;} - if (d == 'l') { pzfe1->fentry.st_mode |= S_IFLNK;pzfe1->fentry.st_size = 0;} - if (r == 'r') pzfe1->fentry.st_mode |= S_IRUSR; - if (w == 'w') pzfe1->fentry.st_mode |= S_IWUSR; - if (x == 'x') pzfe1->fentry.st_mode |= S_IXUSR; - - finfo[frame].allziplist = pzfe1; - pzfe2 = pzfe1; - } - } while (! isdigit(buf[0]) || buf[3] != ' '); - fclose(fData); - if (FTPcmd(frame, NULL, NULL, buf) != 226) - { - sprintf(szMessage, msg[MSG_FTP_ERROR*NUM_LANG+language],"LIST",""); - MessageBox(szMessage,buf,OK); - return; - } - -} - -/****************************************************************************** - * FTPcmd * - ******************************************************************************/ - -int FTPcmd(int frame, const char *s1, const char *s2, char *buf) -{ - if (s1) { - if (s2) { - fprintf(finfo[frame].ftpconn, "%s%s\n", s1, s2); - } else { - fprintf(finfo[frame].ftpconn, "%s\n", s1); - } - fflush(finfo[frame].ftpconn); - } - do { - if ((fgets(buf, 510,finfo[curframe].ftpconn)) == NULL) { - return -1; - } - } while (! isdigit(buf[0]) || buf[3] != ' '); - - return atoi(buf); -} - -/****************************************************************************** - * ShowFile * - ******************************************************************************/ - -void ShowFile(FILE* pipe, char* szAction) -{ - // Code from splugin (with little modifications...) - char *p; - char line[256]; - - - - // Render output window - RenderBox( 0, 0 , viewx , viewy-MENUSIZE , FILL, trans_map[curvisibility]); - RenderBox( 0, 0 , BORDERSIZE, viewy-MENUSIZE , FILL, WHITE); - RenderBox(viewx-BORDERSIZE, 0 , viewx , viewy-MENUSIZE , FILL, WHITE); - RenderBox( 0, 0 , viewx , BORDERSIZE , FILL, WHITE); - RenderBox( 0, BORDERSIZE+FONTHEIGHT_BIG , viewx , 2*BORDERSIZE+FONTHEIGHT_BIG, FILL, WHITE); - RenderBox( 0, viewy-BORDERSIZE- MENUSIZE , viewx , viewy-MENUSIZE , FILL, WHITE); - RenderString(szAction,2*BORDERSIZE, BORDERSIZE+FONTHEIGHT_BIG-FONT_OFFSET_BIG , viewx-4*BORDERSIZE, CENTER, BIG, WHITE); - - int row = 0; - while( fgets( line, 128, pipe ) ) - { - p=strchr(line,'\n'); - if ( p ) - *p=0; - row++; - RenderString(line,2*BORDERSIZE, 2*BORDERSIZE+FONTHEIGHT_BIG+row*FONTHEIGHT_SMALL -FONT_OFFSET, viewx-4*BORDERSIZE, LEFT, SMALL, WHITE); - - if (row > framerows - 2) - { - memcpy(lfb, lbb, fix_screeninfo.line_length*var_screeninfo.yres); - while (1) - { - GetRCCode(RC_NORMAL); - if (rccode == RC_HOME || rccode == RC_OK || rccode == RC_RIGHT) - break; - } - row = 0; - if (rccode == RC_HOME) break; - // Render output window - RenderBox( 0, 0 , viewx , viewy-MENUSIZE , FILL, trans_map[curvisibility]); - RenderBox( 0, 0 , BORDERSIZE, viewy-MENUSIZE , FILL, WHITE); - RenderBox(viewx-BORDERSIZE, 0 , viewx , viewy-MENUSIZE , FILL, WHITE); - RenderBox( 0, 0 , viewx , BORDERSIZE , FILL, WHITE); - RenderBox( 0, BORDERSIZE+FONTHEIGHT_BIG , viewx , 2*BORDERSIZE+FONTHEIGHT_BIG, FILL, WHITE); - RenderBox( 0, viewy-BORDERSIZE- MENUSIZE , viewx , viewy-MENUSIZE , FILL, WHITE); - RenderString(szAction,2*BORDERSIZE, BORDERSIZE+FONTHEIGHT_BIG-FONT_OFFSET_BIG , viewx-4*BORDERSIZE, CENTER, BIG, WHITE); - } - } - if (row>0) - { - memcpy(lfb, lbb, fix_screeninfo.line_length*var_screeninfo.yres); - while (1) - { - GetRCCode(RC_NORMAL); - if (rccode == RC_HOME || rccode == RC_OK) - break; - } - } - rccode = -1; -} - -/****************************************************************************** - * SetPassword * - ******************************************************************************/ - -void SetPassword() -{ - char szP1[20]; - char szP2[20]; - *szP1 = 0x00; - *szP2 = 0x00; - if (GetInputString(150,19,szP1,info[INFO_PASS2*NUM_LANG+language], NO) != RC_OK) return; - if (GetInputString(150,19,szP2,info[INFO_PASS3*NUM_LANG+language], NO) != RC_OK) return; - if (strcmp(szP1,szP2) == 0) - { - strcpy(szPass,szP1); - MessageBox(info[INFO_PASS4*NUM_LANG+language],"",OK); - } - -} - -/****************************************************************************** - * OpenPipe * - ******************************************************************************/ - -FILE* OpenPipe(char* szAction) -{ - FILE *pipe; - char szCommand[4000]; - system("rm -f /tmp/tuxcom.out"); - sprintf(szCommand,"%s > /tmp/tuxcom.out",szAction); - system(szCommand); - pipe = fopen("/tmp/tuxcom.out","r"); - return pipe; -} - -/****************************************************************************** - * GetSizeString * - ******************************************************************************/ - -void GetSizeString(char* sizeString, unsigned long long size, int forcebytes) -{ - unsigned long long tmp = size; - char sztmp[100]; - *sztmp = 0x00; - - if (filesize_in_byte == BTN_NO && !forcebytes) - { - if (size >= (unsigned long long)1024*1024*1024) // we use "real" GigaBytes ;) - { - sprintf(sizeString,"%.2f GB",((double)size)/(double)(1024*1024*1024)); - return; - } - else if (size >= (unsigned long long)1024*1024) - { - sprintf(sizeString,"%.2f MB",((double)size)/(double)(1024*1024)); - return; - } - } - while (tmp > 1000) - { - sprintf(sizeString,".%03lu%s",(unsigned long)(tmp % (unsigned long long)1000), sztmp); - strcpy(sztmp,sizeString); - tmp /= (unsigned long long)1000; - } - sprintf(sizeString,"%lu%s",(unsigned long)tmp,sztmp); - -} - -/****************************************************************************** - * ReadSettings * - ******************************************************************************/ - -void ReadSettings() -{ - FILE *fp; - char *p; - char line[256]; - char lfile[256] = ""; - char rfile[256] = ""; - int lfirst = 0; - int rfirst = 0; - - printf("tuxcom: reading settings \n"); - - finfo[LEFTFRAME].sort = SORT_UP; - finfo[RIGHTFRAME].sort = SORT_UP; - - fp = fopen( CONFIG_FILE, "r" ); - if ( !fp ) - { - printf("tuxcom: could not open %s !!!\n", CONFIG_FILE); - } - else - { - while( fgets( line, 128, fp ) ) - { - if ( *line == '#' ) - continue; - if ( *line == ';' ) - continue; - p=strchr(line,'\n'); - if ( p ) - *p=0; - p=strchr(line,'='); - if ( !p ) - continue; - *p=0; - p++; - if ( !strcmp(line,"version") ) - { - continue; - } - else if ( !strcmp(line,"curframe") ) - { - curframe = atoi(p); - } - else if ( !strcmp(line,"curvisibility") ) - { - curvisibility = atoi(p); - } - else if ( !strcmp(line,"singleview") ) - { - singleview = atoi(p); - if (singleview < 0) singleview = 0; - if (singleview > 1) singleview = 1; - } - else if ( !strcmp(line,"ldir") ) - { - strcpy(finfo[LEFTFRAME].path, p); - } - else if ( !strcmp(line,"rdir") ) - { - strcpy(finfo[RIGHTFRAME].path, p); - } - else if ( !strcmp(line,"lsort") ) - { - finfo[LEFTFRAME].sort = atoi(p); - if (finfo[LEFTFRAME].sort == 0) finfo[LEFTFRAME].sort = SORT_UP; - - } - else if ( !strcmp(line,"rsort") ) - { - finfo[RIGHTFRAME].sort = atoi(p); - if (finfo[RIGHTFRAME].sort == 0) finfo[RIGHTFRAME].sort = SORT_UP; - } - else if ( !strcmp(line,"screenmode") ) - { - screenmode = atoi(p)%2; - } - else if ( !strcmp(line,"lfile") ) - { - strcpy(lfile, p); - } - else if ( !strcmp(line,"rfile") ) - { - strcpy(rfile, p); - } - else if ( !strcmp(line,"lfirst") ) - { - lfirst = atoi(p); - } - else if ( !strcmp(line,"rfirst") ) - { - rfirst = atoi(p); - } - else if ( !strcmp(line,"clip") ) - { - strcpy(szClipboard, p); - } - else if ( !strcmp(line,"pass") ) - { - strcpy(szPass, p); - } - else if ( !strcmp(line,"search") ) - { - strcpy(szSearchstring, p); - } - else if ( !strcmp(line,"filesize_in_byte") ) - { - filesize_in_byte = atoi(p); - } - else if ( !strcmp(line,"langselect") ) - { - langselect = atoi(p); - } - else if ( !strcmp(line,"autosave") ) - { - autosave = atoi(p); - } - else if ( !strcmp(line,"searchtext") ) - { - strcpy(szTextSearchstring, p); - } - } - fclose(fp); - } - FillDir(1-curframe,SELECT_NOCHANGE); - FillDir( curframe,SELECT_NOCHANGE); - if (lfirst < finfo[LEFTFRAME ].count) finfo[LEFTFRAME ].first = lfirst; - if (rfirst < finfo[RIGHTFRAME].count) finfo[RIGHTFRAME].first = rfirst; - SetSelected(LEFTFRAME ,lfile); - SetSelected(RIGHTFRAME ,rfile); - -} -/****************************************************************************** - * WriteSettings * - ******************************************************************************/ - -void WriteSettings() -{ - - FILE *fp; - - - fp = fopen(CONFIG_FILE, "w" ); - if ( !fp ) - { - printf("tuxcom: could not open %s !!!\n", CONFIG_FILE); - } - else - { - fprintf(fp,"version=%d\n", INI_VERSION); - fprintf(fp,"curframe=%d\n", curframe); - fprintf(fp,"curvisibility=%d\n", curvisibility); - fprintf(fp,"singleview=%d\n", singleview); - fprintf(fp,"ldir=%s\n",finfo[LEFTFRAME ].path); - fprintf(fp,"rdir=%s\n",finfo[RIGHTFRAME].path); - fprintf(fp,"lsort=%d\n",finfo[LEFTFRAME ].sort); - fprintf(fp,"rsort=%d\n",finfo[RIGHTFRAME].sort); - fprintf(fp,"screenmode=%d\n",screenmode); - fprintf(fp,"lfile=%s\n",(finfo[LEFTFRAME ].zipfile[0] != 0x00 ? finfo[LEFTFRAME ].zipfile : GetSelected(LEFTFRAME )->name)); - fprintf(fp,"rfile=%s\n",(finfo[RIGHTFRAME].zipfile[0] != 0x00 ? finfo[RIGHTFRAME].zipfile : GetSelected(RIGHTFRAME)->name)); - fprintf(fp,"lfirst=%lu\n",finfo[LEFTFRAME ].first); - fprintf(fp,"rfirst=%lu\n",finfo[RIGHTFRAME].first); - fprintf(fp,"clip=%s\n",szClipboard); - fprintf(fp,"pass=%s\n",szPass); - fprintf(fp,"search=%s\n",szSearchstring); - fprintf(fp,"filesize_in_byte=%d\n",filesize_in_byte); - fprintf(fp,"langselect=%d\n",langselect); - fprintf(fp,"autosave=%d\n",autosave); - fprintf(fp,"searchtext=%s\n",szTextSearchstring); - fclose(fp); - } -} diff --git a/archive-sources/tuxcom/tuxcom.cfg b/archive-sources/tuxcom/tuxcom.cfg deleted file mode 100644 index 2efb7d5..0000000 --- a/archive-sources/tuxcom/tuxcom.cfg +++ /dev/null @@ -1,6 +0,0 @@ -name=TuxBox Commander -desc=file manager -type=2 -needfb=1 -needrc=1 -needoffsets=1 diff --git a/archive-sources/tuxcom/tuxcom.h b/archive-sources/tuxcom/tuxcom.h deleted file mode 100644 index f5a2702..0000000 --- a/archive-sources/tuxcom/tuxcom.h +++ /dev/null @@ -1,643 +0,0 @@ -/* - TuxCom - TuxBox-Commander Plugin - - Copyright (C) 2004 'dbluelle' (dbluelle@blau-weissoedingen.de) - - Homepage: http://www.blau-weissoedingen.de/dreambox/ - - License: GPL - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA -*/ - -//#include -#define _FILE_OFFSET_BITS 64 -#define _GNU_SOURCE -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -//#include - -//#include -//#include - -#include -#include -#include -#include - -#include -#include FT_FREETYPE_H -#include FT_CACHE_H -#include FT_CACHE_SMALL_BITMAPS_H - - -#include - -//#define AVS "/dev/dbox/avs0" -//#define SAA "/dev/dbox/saa0" - -#define MENUROWS 10 -#define MENUITEMS 10 -#define MENUSIZE 59 -#define MINBOX 380 -#define BUTTONWIDTH 114 -#define BUTTONHEIGHT 30 -#define COLORBUTTONS 4 - -#define LEFTFRAME 0 -#define RIGHTFRAME 1 - -#define DEFAULT_PATH "/" -#define charset " abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789#!$%&?*()@\\/=<>+-_,.;:" - -#define FILEBUFFER_SIZE (100 * 1024) // Edit files up to 100k -#define FTPBUFFER_SIZE (200 * 1024) // FTP Download Buffer size - -#define MSG_VERSION "Tuxbox Commander Version 1.17\n" -#define MSG_COPYRIGHT "© dbluelle 2004-2007" - -// rc codes -#define RC_0 '0' -#define RC_1 '1' -#define RC_2 '2' -#define RC_3 '3' -#define RC_4 '4' -#define RC_5 '5' -#define RC_6 '6' -#define RC_7 '7' -#define RC_8 '8' -#define RC_9 '9' - -#define RC_RIGHT 0x0191 -#define RC_LEFT 0x0192 -#define RC_UP 0x0193 -#define RC_DOWN 0x0194 -#define RC_PLUS 0x0195 -#define RC_MINUS 0x0196 - -#define RC_OK 0x0D -#define RC_STANDBY 0x1C -#define RC_ESC RC_HOME - -#define RC_HOME 0x01B1 -#define RC_MUTE 0x01B2 -#define RC_HELP 0x01B3 -#define RC_DBOX 0x01B4 - -#define RC_GREEN 0x01A1 -#define RC_YELLOW 0x01A2 -#define RC_RED 0x01A3 -#define RC_BLUE 0x01A4 - -#define RC_PAUSE RC_HELP -#define RC_ALTGR 0x12 -#define RC_BS 0x7F -#define RC_POS1 RC_HOME -#define RC_END 0x13 -#define RC_INS 0x10 -#define RC_ENTF 0x11 -#define RC_STRG 0x00 -#define RC_LSHIFT 0x0E -#define RC_RSHIFT 0x0E -#define RC_ALT 0x0F -#define RC_NUM RC_DBOX -#define RC_ROLLEN 0x00 -#define RC_F5 RC_DBOX -#define RC_F6 RC_HELP -#define RC_F7 RC_MUTE -#define RC_F8 0x01C8 -#define RC_F9 0x01C9 -#define RC_F10 0x01CA -#define RC_RET 0x0D -#define RC_RET1 0x01CC -#define RC_CAPSLOCK 0x01CD -#define RC_ON 0x01CE - -#define RC_F1 RC_RED -#define RC_F2 RC_GREEN -#define RC_F3 RC_YELLOW -#define RC_F4 RC_BLUE -#define RC_PAGEUP RC_PLUS -#define RC_PAGEDOWN RC_MINUS - -int rctable[] = -{ - 0x00, RC_ESC, '1', '2', '3', '4', '5', '6', '7', '8', '9', '0', 'ß', '´', RC_BS, 0x09, - 'q', 'w', 'e', 'r', 't', 'z', 'u', 'i', 'o', 'p', 'ü', '+', RC_RET, RC_STRG, 'a', 's', - 'd', 'f', 'g', 'h', 'j', 'k', 'l', 'ö', 'ä', '^', RC_LSHIFT, '#', 'y', 'x', 'c', 'v', - 'b', 'n', 'm', ',', '.', '-', RC_RSHIFT, 0x00, RC_ALT, 0x20, RC_CAPSLOCK,RC_F1,RC_F2,RC_F3,RC_F4,RC_F5, - RC_F6,RC_F7,RC_F8,RC_F9,RC_F10,RC_NUM,RC_ROLLEN,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, RC_STANDBY, 0x00, 0x00, 0x00, 0x00, '<', RC_OK, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, RC_ALTGR, 0x00, RC_POS1, RC_UP, RC_PAGEUP, RC_LEFT, RC_RIGHT, RC_END, RC_DOWN,RC_PAGEDOWN,RC_INS,RC_ENTF, - 0x00, RC_MUTE, RC_MINUS, RC_PLUS, RC_STANDBY, 0x00, 0x00, RC_PAUSE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 -}; -int rcshifttable[] = -{ - 0x00, RC_ESC, '!', '"', '§', '$', '%', '&', '/', '(', ')', '=', '?', '`', 0x08, 0x09, - 'Q', 'W', 'E', 'R', 'T', 'Z', 'U', 'I', 'O', 'P', 'Ü', '*', RC_RET1, RC_STRG, 'A', 'S', - 'D', 'F', 'G', 'H', 'J', 'K', 'L', 'Ö', 'Ä', '°', RC_LSHIFT, 0x27, 'Y', 'X', 'C', 'V', - 'B', 'N', 'M', ';', ':', '_', RC_RSHIFT, 0x00, RC_ALT, 0x20, RC_CAPSLOCK,RC_F1,RC_F2,RC_F3,RC_F4,RC_F5, - RC_F6,RC_F7,RC_F8,RC_F9,RC_F10,RC_NUM,RC_ROLLEN,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, RC_STANDBY, 0x00, 0x00, 0x00, 0x00, '>' -}; -int rcaltgrtable[] = -{ - 0x00, RC_ESC, 0x00, '²', '³', 0x00, 0x00, 0x00, '{', '[', ']', '}', '\\', 0x00, 0x00, 0x00, - '@', 0x00, '€', 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, '~', RC_RET1, RC_STRG, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, RC_LSHIFT, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 'µ', 0x00, 0x00, 0x00, RC_RSHIFT, 0x00, RC_ALT, 0x20, RC_CAPSLOCK,RC_F1,RC_F2,RC_F3,RC_F4,RC_F5, - RC_F6,RC_F7,RC_F8,RC_F9,RC_F10,RC_NUM,RC_ROLLEN,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, RC_STANDBY, 0x00, 0x00, 0x00, 0x00, '|' -}; - -// kb codes - -#define KBC_UP 0x01 -#define KBC_DOWN 0x02 -#define KBC_RIGHT 0x03 -#define KBC_LEFT 0x04 -#define KBC_INS 0x05 -#define KBC_DEL 0x06 -#define KBC_POS1 0x07 -#define KBC_BACKSPACE 0x7F -#define KBC_END 0x0A -#define KBC_PAGEUP 0x0B -#define KBC_PAGEDOWN 0x0C -#define KBC_RETURN 0x0D -#define KBLCKFILE "/tmp/keyboard.lck" //! file to lock keyboard-conversion - - - -//freetype stuff - -//#define FONT "/usr/share/fonts/md_khmurabi_10.ttf" -#define FONT "/share/fonts/neutrino.ttf" -// if font is not in usual place, we look here: -#define FONT2 "/share/fonts/pakenham.ttf" - -enum {LANG_INT,LANG_DE, LANG_IT, LANG_SV, LANG_PT}; -enum {RC_NORMAL,RC_EDIT}; -enum {LEFT, CENTER, RIGHT}; -enum {VERY_SMALL, SMALL, BIG}; - -FT_Library library; -FTC_Manager manager; -FTC_SBitCache cache; -FTC_SBit sbit; -FTC_ImageTypeRec desc; -FT_Face face; -FT_UInt prev_glyphindex; -FT_Bool use_kerning; - - - -enum {OK, OKCANCEL, OKHIDDENCANCEL,YESNOCANCEL,NOBUTTON,OVERWRITECANCEL,OVERWRITESKIPCANCEL,CANCELRUN}; -enum {YES, NO, HIDDEN,CANCEL, OVERWRITE, SKIP, OVERWRITEALL,SKIPALL,EDIT, RENAME, SEARCHRESULT, EDITOR}; -enum {GZIP,BZIP2,COMPRESS,TAR,FTP}; - -#define FONTHEIGHT_VERY_SMALL 20 -#define FONTHEIGHT_SMALL 24 -#define FONTHEIGHT_BIG 32 -#define FONT_OFFSET 5 -#define FONT_OFFSET_BIG 6 -#define BORDERSIZE 5 -//framebuffer stuff - -enum {FILL, GRID}; -enum {TRANSP, WHITE, BLACK, BLUE1, BLUE2, ORANGE, GREEN, YELLOW, RED, GRAY,GREEN2,GRAY2, BLUE_TRANSP, GRAY_TRANSP, BLUE3}; - -unsigned char *lfb = 0, *lbb = 0; - -struct fb_fix_screeninfo fix_screeninfo; -struct fb_var_screeninfo var_screeninfo; - -unsigned char bgra[][4] = { -"\x00\x00\x00\x00", "\xFF\xFF\xFF\xFF", "\x00\x00\x00\xFF", "\x80\x00\x00\xFF", -"\xFF\x80\x00\xFF", "\x00\xC0\xFF\xFF", "\x00\xD0\x00\xFF", "\x00\xE8\xE8\xFF", -"\x00\x00\xFF\xFF", "\xB0\xB0\xB0\xFF", "\x00\xFF\x00\xFF", "\x50\x50\x50\xFF", -"\x80\x00\x00\xC0", "\x50\x50\x50\xC0", "\xFF\x40\x00\xFf" }; - -#define CONFIG_FILE "/var/tuxbox/config/tuxcom.conf" - -unsigned short rd[] = {0xFF<<8, 0x00<<8, 0x00<<8, 0x00<<8, 0xFF<<8, 0x00<<8, 0xE8<<8, 0xFF<<8, 0xb0<<8, 0x00<<8, 0x50<<8, 0x00<<8, 0x50<<8, 0x00<<8}; -unsigned short gn[] = {0xFF<<8, 0x00<<8, 0x00<<8, 0x80<<8, 0xC0<<8, 0xd0<<8, 0xE8<<8, 0x00<<8, 0xb0<<8, 0xff<<8, 0x50<<8, 0x00<<8, 0x50<<8, 0x40<<8}; -unsigned short bl[] = {0xFF<<8, 0x00<<8, 0x80<<8, 0xFF<<8, 0x00<<8, 0x00<<8, 0x00<<8, 0x00<<8, 0xb0<<8, 0x00<<8, 0x50<<8, 0x80<<8, 0x50<<8, 0xff<<8}; -unsigned short tr[] = {0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 , 0x0000 , 0x0000 , 0x80ff , 0x80ff , 0x0000 }; -struct fb_cmap colormap = {1, 14, rd, gn, bl, tr}; - - -int trans_map [] = {BLUE1,BLUE_TRANSP,TRANSP}; -int trans_map_mark[] = {GRAY2,GRAY_TRANSP,GRAY_TRANSP}; - -struct input_event ev; - -unsigned short rccode; -char kbcode; - -//some data - -int avs, saa, fnc_old, saa_old, screenmode; -int rc, fb, kb; -int sx, ex, sy, ey; -int PosX, PosY, StartX, StartY, FrameWidth, NameWidth, SizeWidth; -int curframe, cursort, curvisibility, singleview; -int tool[MENUITEMS*2]; -int colortool[COLORBUTTONS]; -int overwriteall, skipall; -int textuppercase; - -int framerows; -int viewx; -int viewy; -int menuitemwidth; -int menuitemnumber; - -char tmpzipdir[256]; -char szClipboard[256]; -char szSearchstring[FILENAME_MAX]; -char szTextSearchstring[FILENAME_MAX]; -char szPass[20]; -long commandsize; - -//int fncmodes[] = {AVS_FNCOUT_EXT43, AVS_FNCOUT_EXT169}; -//int saamodes[] = {SAA_WSS_43F, SAA_WSS_169F}; - -FILE *conf; -int language, langselect, autosave, filesize_in_byte; - -#define ACTION_NOACTION 0 -#define ACTION_PROPS 1 -#define ACTION_RENAME 2 -#define ACTION_VIEW 3 -#define ACTION_EDIT 4 -#define ACTION_COPY 5 -#define ACTION_MOVE 6 -#define ACTION_MKDIR 7 -#define ACTION_DELETE 8 -#define ACTION_MKFILE 9 -#define ACTION_MKLINK 10 - -#define ACTION_EXEC 1 -#define ACTION_MARKER 2 -#define ACTION_SORT 3 -#define ACTION_REFRESH 4 -#define ACTION_DELLINE 5 -#define ACTION_INSLINE 6 -#define ACTION_CLEAR 7 -#define ACTION_UPPERCASE 8 -#define ACTION_LOWERCASE 9 -#define ACTION_KILLPROC 10 -#define ACTION_TOLINUX 11 -#define ACTION_MARKTEXT 12 -#define ACTION_INSTEXT 13 - - - - -#define BTN_OK 0 -#define BTN_CANCEL 1 -#define BTN_HIDDEN 2 -#define BTN_YES 3 -#define BTN_NO 4 -#define BTN_OVERWRITE 5 -#define BTN_SKIP 6 -#define BTN_OVERWRITEALL 7 -#define BTN_SKIPALL 8 -#define BTN_RENAME 9 -#define BTN_ASK 10 -#define BTN_AUTO 11 -#define BTN_GERMAN 12 -#define BTN_ENGLISH 13 -#define BTN_ITALIAN 14 -#define BTN_SWEDISH 15 -#define BTN_PORTUGUES 16 - -#define SORT_UP 1 -#define SORT_DOWN -1 - -#define SELECT_NOCHANGE 0 -#define SELECT_UPDIR 1 -#define SELECT_ROOTDIR 2 - -#define SHOW_NO_OUTPUT 0 -#define SHOW_OUTPUT 1 -#define SHOW_SEARCHRESULT 2 - -#define REPEAT_TIMER 3 - -#define INI_VERSION 1 - -#define NUM_LANG 5 - -#define MAINMENU 8 - -enum {MSG_EXEC , - MSG_EXEC_NOT_POSSIBLE , - MSG_COPY , - MSG_COPY_MULTI , - MSG_COPY_PROGRESS , - MSG_COPY_NOT_POSSIBLE , - MSG_MOVE , - MSG_MOVE_MULTI , - MSG_MOVE_PROGRESS , - MSG_DELETE , - MSG_DELETE_MULTI , - MSG_DELETE_PROGRESS , - MSG_RENAME , - MSG_MKDIR , - MSG_MKFILE , - MSG_MKLINK , - MSG_COMMAND , - MSG_SAVE , - MSG_FILE_EXISTS , - MSG_LINE , - MSG_READ_ZIP_DIR , - MSG_EXTRACT , - MSG_FTP_NOCONN , - MSG_FTP_CONN , - MSG_FTP_ERROR , - MSG_FTP_READDIR , - MSG_KILLPROC , - MSG_PROCESSID , - MSG_PROCESSUSER , - MSG_PROCESSNAME , - MSG_CANCELDOWNLOAD , - MSG_APPENDDOWNLOAD , - MSG_SEARCHFILES , - MSG_SAVESETTINGS }; - -enum {INFO_COPY , - INFO_MOVE , - INFO_EXEC , - INFO_MARKER , - INFO_PROC , - INFO_PASS1 , - INFO_PASS2 , - INFO_PASS3 , - INFO_PASS4 , - INFO_SEARCH1 , - INFO_SEARCH2 , - INFO_SAVED , - INFO_ACCESSED , - INFO_MODIFIED , - INFO_CREATED , - INFO_DATETIME }; - - -char *numberchars[] = { "0#!$%&?*()@\\", - "1/=<>+-_,.;:" , - "abc2", - "def3", - "ghi4", - "jkl5", - "mno6", - "pqrs7", - "tuv8", - "wxyz9" }; - -char *info[] = { "(select 'hidden' to copy in background)" ,"('versteckt' wählen zum Kopieren im Hintergrund)" ,"(Seleziona 'nascosto' per copiare in background)" ,"(välj 'gömd' för att kopiera i bakgrunden)" ,"(Seleccionar 'Escondido' para copiar em background)" , - "(select 'hidden' to move in background)" ,"('versteckt' wählen zum Verschieben im Hintergrund)" ,"(Seleziona 'nascosto' per muovere in background)" ,"(välj 'gömd' för att flytta i bakgrund)" ,"(Seleccionar 'Escondido' para mover em background)" , - "(select 'hidden' to execute in background)" ,"('versteckt' wählen zum Ausführen im Hintergrund)" ,"(Seleziona 'nascosto' per eseguire in background)" ,"(välj 'hidden' för att starta i bakgrunden)" ,"(Seleccionar 'Escondido' para executar em background)", - "selected:%d" ,"markiert:%d" ,"Seleziona:%d" ,"vald:%d" ,"Seleccionado:%d" , - "Warning: killing a process can make your box unstable!","Warnung: Prozesse beenden kann die Box instabil werden lassen!","Attenzione: fermare un processo può rendere il DB instabile!" ,"Varning: döda en process kan göra din box ostabil!","Matar um processo pode pox a BOX instavel" , - "Please enter your password" ,"Bitte Passwort eingeben" ,"Per fovore inserire la password" ,"Skriv in ditt lösenord" ,"Por favor introduza password" , - "Please enter new password" ,"Bitte neues Passwort eingeben" ,"Per fovore inserire la nuova password" ,"Skriv in ditt nya lösenord" ,"Por favor imtroduza nova password" , - "Please enter new password again" ,"Bitte neues Passwort wiederholen" ,"Per fovore inserire la nuova password di nuovo" ,"Skriv in ditt nya lösenord igen" ,"Por favor introduza nova password outra vez" , - "password has been changed" ,"Passwort wurde geändert" ,"La password è stata cambiata" ,"lösenordet har ändrats" ,"Password foi alterada" , - "searching..." ,"Suche läuft..." ,"Ricerca in corso..." ,"Söker..." ,"Procurando..." , - "search result" ,"Suchergebnis" ,"Risultato della ricerca" ,"Sökresultat" ,"Resultado da pesquisa" , - "settings saved" ,"Einstellungen gespeichert" ,"Impostazioni salvate" ,"Inställningar sparade" ,"Gravar configuracoes" , - "last access" ,"letzter Zugriff" ,"last access" ,"Senast öppnad" ,"Ultimo acesso" , - "last modified" ,"letze Änderung" ,"last modified" ,"Senast modifierad" ,"Modificado a ultima vez" , - "created" ,"Erstellung" ,"created" ,"skapad" ,"Criado" , - "%m/%d/%Y %H:%M:%S" ,"%d.%m.%Y %H:%M:%S" ,"%m/%d/%Y %H:%M:%S" ,"%Y-%m-%d %H:%M:%S" ,"%m/%d/%Y %H:%M:%S" }; - -char *msg[] = { "Execute '%s' ?" ,"'%s' ausführen ?" ,"Eseguire '%s' ?" ,"Starta '%s' ?" ,"Executa '%s' ?" , - "Cannot execute file '%s'" ,"Kann '%s' nicht ausführen" ,"Impossibile eseguire il file '%s' " ,"Kan inte starta fil" ,"Nao pode executar o ficheiro '%s'" , - "Copy '%s' to '%s' ?" ,"'%s' nach '%s' kopieren ?" ,"Copiare '%s' a '%s' ?" ,"Kopiera '%s' till '%s'?" ,"Copia '%s' para '%s' ?" , - "Copy %d file(s) to '%s' ?" ,"%d Datei(en) nach '%s' kopieren ?" ,"Copiare %d file in '%s' ?" ,"Kopiera %d fil(er) till '%s'?" ,"Copiar %d ficheiros '%s' para '%s' ?" , - "Copying file '%s' to '%s'..." ,"kopiere '%s' nach '%s' ..." ,"Sto copiando file '%s' in '%s' ..." ,"Kopierar filen '%s' till '%s'..." ,"Copiando ficheiro '%s' para '%s'" , - "Cannot copy to same Directory" ,"kann nicht in das gleiche Verzeichnis kopieren" ,"Impossibile copiare alla stessa directory" ,"Kan inte kopiera till samma mapp" ,"Nao pode copiar para a mesma Directoria" , - "Move '%s' to '%s' ?" ,"'%s' nach '%s' verschieben ?" ,"Muovere '%s' in '%s' ?" ,"Flytta '%s' till '%s' ?" ,"Mover '%s' para '%s' ?" , - "Move %d file(s) to '%s' ?" ,"%d Datei(en) nach '%s' verschieben ?" ,"Muovere %d file in '%s' ?" ,"Flytta %d fil(er) till '%s' ?" ,"Mover %d ficheiros para '%s' ..." , - "Moving file '%s' to '%s'..." ,"verschiebe '%s' nach '%s' ..." ,"Sto muovendo file '%s' in '%s' ..." ,"Flyttar filen '%s' till '%s'..." ,"Movendo os ficheiros '%s' para '%s' ..." , - "Delete '%s' ?" ,"'%s' löschen ?" ,"Cancellare '%s' ?" ,"Radera '%s' ?" ,"Apagando '%s' ?" , - "Delete %d files ?" ,"%d Datei(en) löschen ?" ,"Cancellare i %d file ?" ,"Radera %d fil(er) ?" ,"Apagando %d ficheiros ?" , - "Deleting file '%s'..." ,"lösche Datei '%s' ..." ,"Sto cancellando i file '%s' ..." ,"Raderar filen '%s'..." ,"Apagando ficheiros '%s' :" , - "rename file '%s' :" ,"Datei '%s' umbenennen:" ,"Rinominare il file '%s' :" ,"Byt namn på filen '%s'" ,"Mudar nome do ficheiro '%s' :" , - "create new directory in '%s'" ,"neues Verzeichnis in '%s' erstellen" ,"Creare una nuova directory nella directory '%s'" ,"Skapa ny mapp i mappen '%s'" ,"Criar novo directorio en '%s'" , - "create new file in directory '%s'" ,"neue Datei in Verzeichnis '%s' erstellen" ,"Creare un nuovo file '%s' nella directory" ,"Skapa ny fil i mappen '%s'" ,"Criar novo ficheiro no directorio '%s'" , - "create link to '%s%s\' in directory '%s'" ,"Verweis auf '%s%s' in Verzeichnis '%s' erstellen","Creare un link a '%s%s' nella directory '%s' " ,"Skapa länk till '%s%s\' i mappen '%s'","Criar uma ligacao para '%s%s\' no directorio '%s'", - "execute linux command" ,"Linux-Kommando ausführen" ,"Eseguire un comando linux" ,"Exekvera Linux kommando" ,"Executar comando linux" , - "save changes to '%s' ?" ,"Änderungen an '%s' speichern ?" ,"Salvare i cambiamenti a '%s' ?" ,"Spara ändringar till '%s'?" ,"Gravar alteracoes em '%s'" , - "file '%s' already exists" ,"Datei '%s' existiert bereits" ,"Il file '%s' esiste già" ,"Filen '%s' finns redan" ,"Ficheiro '%s' ja existe" , - "line %d of %d%s" ,"Zeile %d von %d%s" ,"Linea %d di %d%s" ,"Linje %d av %d%s" ,"Linha %d de %d%s" , - "reading archive directory..." ,"Lese Archiv-Verzeichnis..." ,"Sto leggendo la directory dell'archivio..." ,"Läser arkivmapp..." ,"Ler arquivo de directorio" , - "extracting from file '%s'..." ,"Entpacke aus Datei '%s'" ,"Sto estraendo dal file '%s'" ,"Extraherar från filen '%s'..." ,"Extrair do ficheiro '%s' ..." , - "no connection to" ,"Keine Verbindung zu" ,"Nessuna connessione" ,"Ingen anslutning till" ,"Nao ha ligacao para" , - "connecting to" ,"Verbinde mit" ,"Mi sto connettendo" ,"Ansluten till" ,"A ligar a" , - "error in ftp command '%s%s'" ,"Fehler bei FTP-Kommando '%s%s'" ,"Errore nel comando ftp '%s%s'" ,"Fel i FTP-kommando '%s%s'" ,"Erro no comando ftp '%s%s'" , - "reading directory" ,"Lese Verzeichnis" ,"Sto leggendo la directory" ,"läser mappinformation" ,"Ler directorio" , - "Do you really want to kill process '%s'?" ,"Wollen sie wirklich den Prozess '%s' beenden?" ,"Vuoi davvero fermare il processo '%s' ?" ,"Vill du verkligen döda process '%s'?" ,"Quer mesmo matar este processo '%s'" , - "process id" ,"Prozess ID" ,"ID processo" ,"process ID" ,"ID do processo" , - "owner" ,"Besitzer" ,"Proprietario" ,"ägare" ,"Proprietario" , - "process" ,"Prozess" ,"Processo" ,"process" ,"Processo" , - "cancel download ?" ,"Download abbrechen ?" ,"Cancellare Download ?" ,"avbryt nedladdning ?" ,"Parar download ?" , - "append to file '%s' ?" ,"An Datei '%s' anhängen ?" ,"Aggiungere al file '%s' ?" ,"Lägg till i fil '%s' ?" ,"Acrescentar ao ficheiro '%s' ?" , - "search in directory %s for file:" ,"In Verzeichnis %s suchen nach Datei:" ,"Sto cercando il file %s:" ,"sök i mappen %s efter fil:" ,"Procurar no directorio %s pelo ficheiro:" , - "save current settings ?" ,"Einstellungen speichern ?" ,"Salvare le impostazioni correnti ?" ,"spara nuvarande inställningar ?" ,"Gravar configuracao corrente" }; - -char *menuline[] = { "" , "" ,"" ,"" ,"" , - "rights", "Rechte" ,"Attrib","rätti." ,"Attrib", - "rename", "umben." ,"Rinom.","byt na.","Renom.", - "view" , "Ansicht","Vedi" ,"visa" ,"Ver" , - "edit" , "bearb." ,"Edita" ,"ändra" ,"Edita" , - "copy" , "kopier.","Copia" ,"kopiera","Copia" , - "move" , "versch.","Muovi" ,"flytta" ,"Mover" , - "mkdir" , "mkdir" ,"mkdir" ,"mkdir" ,"mkdir" , - "delete", "löschen","Canc." ,"radera" ,"Apagar", - "touch" , "neu" ,"Crea" ,"touch" ,"Cria" , - "link" , "Verw." ,"Link" ,"länk" ,"Ligar" }; - -char *editorline[]= { "" , "" ,"" ,"" ,"" , - "" , "" ,"" ,"" ,"" , - "" , "" ,"" ,"" ,"" , - "mark" , "mark." ,"Seleziona","markera","Marcar", - "" , "" ,"" ,"" ,"" , - "copy" , "kopier.","Copia" ,"kopiera","Copia" , - "move" , "versch.","Muovi" ,"flytta" ,"mover" , - "" , "" ,"" ,"" ,"" , - "delete", "löschen","Cancella" ,"radera" ,"Apagar", - "" , "" ,"" ,"" ,"" , - "" , "" ,"" ,"" ,"" }; - -char *colorline[] = { "" , "" ,"" ,"" ,"" , - "execute command", "Kommando ausführen" ,"Esegui comando" ,"starta kommando" ,"Executar comando" , - "toggle marker" , "Datei markieren" ,"Seleziona" ,"växla markering" ,"Seleccionar" , - "sort directory" , "Verzeichnis sortieren","Ordina directory","sortera mapp" ,"Ordenar Directorio", - "refresh view" , "Ansicht aktualisieren","Rivisualizza" ,"uppdatera vy" ,"Fazer refresh" , - "delete line" , "Zeile löschen" ,"Cancella riga" ,"radera linje" ,"Apagar linha" , - "insert line" , "Zeile einfügen" ,"Inserisci riga" ,"lägg till linje" ,"Inserir linha" , - "clear input" , "Eingabe löschen" ,"Cancella ins." ,"rensa inmatning" ,"Cancelar insercao" , - "set uppercase" , "Grossbuchstaben" ,"Imposta su" ,"sätt versaler" ,"Por letra grande" , - "set lowercase" , "Kleinbuchstaben" ,"Imposta giù" ,"sätt gemener" ,"Por letra pequena" , - "kill process" , "Prozess beenden" ,"Ferma processo" ,"döda process" ,"Matar processo" , - "to linux format", "in Linux-Format" ,"A formato linux" ,"till Linux format","Formato linux" , - "mark text" , "Text markieren" ,"Marca testo" ,"markera text" ,"Marcar texto" , - "insert text" , "Text einfügen" ,"Inserisci testo" ,"lägg till text" ,"inserir Texto" }; - -char *mbox[] = { "OK" , "OK" ,"OK" ,"OK" ,"OK" , - "Cancel" , "Abbrechen" ,"Annulla" ,"Avbryt" ,"Cancelar" , - "Hidden" , "Versteckt" ,"Nascosto" ,"Gömd" ,"Esconder" , - "yes" , "ja" ,"Si" ,"ja" ,"Sim" , - "no" , "nein" ,"No" ,"nej" ,"Nao" , - "overwrite" , "überschr." ,"Sovrascrivi" ,"skriv över" ,"Sobrepor" , - "skip" , "überspringen" ,"Salta" ,"hoppa över" ,"Saltar" , - "overwrite all", "alle überschreiben","Sovrascivi tutto" ,"skriv över alla","Sobrepor tudo", - "skip all" , "alle überspringen" ,"Salta tutto" ,"hoppa över alla","Saltar tudo" , - "rename" , "umben." ,"Rinomina" ,"byt namn" ,"Mudar nome" , - "ask" , "nachfragen" ,"Chiedi" ,"fråga" ,"Pergunta" , - "auto" , "automatisch" ,"automatico" ,"auto" ,"Auto" , - "Deutsch" , "Deutsch" ,"Deutsch" ,"Deutsch" ,"Deutsch" , - "english" , "english" ,"english" ,"english" ,"english" , - "Italiano" , "Italiano" ,"Italiano" ,"Italiano" ,"Italiano" , - "svenska" , "svenska" ,"svenska" ,"svenska" ,"svenska" , - "Portugues" , "Portugues" ,"Portugues" ,"Portugues" ,"Portugues" }; - -char *props[] = { "read" , "lesen" ,"Lettura" ,"läs" ,"Ler" , - "write" , "schreiben","Scrittura" ,"skriv" ,"Escrever" , - "execute", "ausführen","Esecuzione","exekvera","Exececutar"}; - -char *ftpstr[] = { "host" , "Adresse" ,"Host" ,"serveraddress","Host" , - "port" , "Port" ,"Porta" ,"port" ,"Porta" , - "user" , "Nutzer" ,"Utente" ,"användare" ,"User" , - "password" , "Passwort" ,"Password" ,"lösenord" ,"Password" , - "directory", "Verzeichnis","Directory" ,"mapp" ,"Directorio"}; - -char *mainmenu[] = { "search files" , "Dateien suchen" ,"Cerca file" ,"sök filer" ,"Procurar ficheiros" , - "taskmanager" , "Prozessübersicht" ,"Taskmanager" ,"Processöversikt" ,"List de processos" , - "toggle 16:9 mode" , "16:9-Modus setzen" ,"Passa a modalità 16:9" ,"växla 16:9 läge" ,"Mudar para 16:9" , - "set password" , "Passwort setzen" ,"Imposta password" ,"sätt lösenord" ,"Por password" , - "show filesizes in byte <%s>" , "Dateigrössen in Byte anzeigen <%s>" ,"show filesizes in byte <%s>" ,"show filesizes in byte <%s>" ,"show filesizes in byte <%s>" , - "language/Sprache/Lingua/Språk: <%s>", "Sprache/language/Lingua/Språk: <%s>" ,"Lingua/language/Sprache/Språk: <%s>" ,"Lingua/language/Sprache/Språk: <%s>" ,"Lingua/language/Sprache/Språk: <%s>", - "save settings on exit: <%s>" , "Einstellungen beim Beenden speichern: <%s>","Salvare le impostazioni in uscita: <%s>" ,"spara inställningar vid avslut: <%s>","Gravar e sair: <%s>" , - "save settings now" , "Einstellungen jetzt speichern" ,"Salvare le impostazioni adesso" ,"spara inställningar nu" ,"Gravar configuracoes agora" }; - -struct fileentry -{ - char name[256]; - struct stat fentry; -}; -struct zipfileentry -{ - char name[FILENAME_MAX]; - struct stat fentry; - struct zipfileentry * next; -}; -struct marker -{ - char name[256]; - struct marker* next; -}; - - -struct frameinfo -{ - char path[FILENAME_MAX]; - int writable; - int sort; - int markcount; - unsigned long long marksize; - long first; - long selected; - unsigned long count; - unsigned long long size; - struct fileentry* flist; - struct marker * mlist; - int ziptype; - char zipfile[FILENAME_MAX]; - char zippath[FILENAME_MAX]; - struct zipfileentry* allziplist; - FILE* ftpconn; - struct sockaddr_in s_in; - char ftphost[512]; - int ftpport; - char ftpuser[100]; - char ftppass[100]; - -}; - - - -struct frameinfo finfo[2]; - -//functions - -void SetPassword(); -void RenderBox(int sx, int sy, int ex, int ey, int mode, int color); -void RenderFrame(int frame); -void RenderMenuLine(int highlight, int refresh); -void FillDir(int frame, int selmode); -struct fileentry* GetSelected(int frame); -void SetSelected(int frame, const char* szFile); -void GetSizeString(char* sizeString, unsigned long long size, int forcebytes); -int MessageBox(const char* msg1,const char* msg2, int mode); -int GetInputString(int width, int maxchars, char* str, char * msg, int pass); -void ClearEntries(int frame); -void ClearZipEntries(int frame); -void ClearMarker(int frame); -void RenameMarker(int frame, const char* szOld, const char* szNew); -void ToggleMarker(int frame); -int IsMarked(int frame, int pos); -int CheckOverwrite(struct fileentry* pfe, int mode, char* szNew); -void ReadSettings(); -void WriteSettings(); -void DoExecute(char* szAction, int showoutput); -int DoCopy(struct fileentry* pfe, int typ, int checkmode, char* szZipCommand); -void DoZipCopyEnd(); -int DoMove(struct fileentry* pfe, int typ, int checktype); -void DoViewFile(); -void DoEditFile(char* szFile, char* szTitle, int writable); -void DoTaskManager(); -int DoEditString(int x, int y, int width, int maxchars, char* str, int vsize, int back, int pass); -int ShowProperties(); -void RenderButtons(int he, int mode); -int flistcmp(struct fileentry * p1, struct fileentry * p2); -struct fileentry* getfileentry(int frame, int pos); -struct fileentry* FindFile(int frame, const char* szFile); -void sortframe(int frame, char* szSel); -void ShowFile(FILE* pipe, char* szAction); -void ReadZip(int typ); -int CheckZip(char* szName); -FILE* OpenPipe(char* szAction); -void OpenFTP(); -void ReadFTPDir(int frame, char* seldir); -int FTPcmd(int frame, const char *s1, const char *s2, char *buf); -void DoEditFTP(char* szFile,char* szTitle); -void DoMainMenu(); -void DoSearchFiles(); -- 2.39.5