diff options
Diffstat (limited to '')
-rw-r--r-- | PalmPilot.c | 381 | ||||
-rw-r--r-- | Status | 22 | ||||
-rw-r--r-- | mail.c | 228 | ||||
-rw-r--r-- | mail.h | 50 | ||||
-rw-r--r-- | mail2.c | 537 | ||||
-rw-r--r-- | socket.c | 228 | ||||
-rw-r--r-- | socket.h | 45 | ||||
-rw-r--r-- | wifi.c | 151 | ||||
-rw-r--r-- | wifi.h | 41 |
9 files changed, 13 insertions, 1670 deletions
diff --git a/PalmPilot.c b/PalmPilot.c deleted file mode 100644 index c0c6bcf..0000000 --- a/PalmPilot.c +++ /dev/null @@ -1,381 +0,0 @@ -/* $Id: PalmPilot.c,v 1.17 2004/01/30 20:57:55 reinelt Exp $ - * - * driver for 3Com Palm Pilot - * - * Copyright 2000 Michael Reinelt <reinelt@eunet.at> - * - * This file is part of LCD4Linux. - * - * LCD4Linux 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, or (at your option) - * any later version. - * - * LCD4Linux 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. - * - * - * $Log: PalmPilot.c,v $ - * Revision 1.17 2004/01/30 20:57:55 reinelt - * HD44780 patch from Martin Hejl - * dmalloc integrated - * - * Revision 1.16 2004/01/29 04:40:02 reinelt - * every .c file includes "config.h" now - * - * Revision 1.15 2004/01/09 04:16:06 reinelt - * added 'section' argument to cfg_get(), but NULLed it on all calls by now. - * - * Revision 1.14 2003/10/05 17:58:50 reinelt - * libtool junk; copyright messages cleaned up - * - * Revision 1.13 2003/09/13 06:45:43 reinelt - * icons for all remaining drivers - * - * Revision 1.12 2003/09/09 06:54:43 reinelt - * new function 'cfg_number()' - * - * Revision 1.11 2003/08/24 05:17:58 reinelt - * liblcd4linux patch from Patrick Schemitz - * - * Revision 1.10 2003/08/17 12:11:58 reinelt - * framework for icons prepared - * - * Revision 1.9 2003/07/24 04:48:09 reinelt - * 'soft clear' needed for virtual rows - * - * Revision 1.8 2003/02/22 07:53:10 reinelt - * cfg_get(key,defval) - * - * Revision 1.7 2002/08/19 04:41:20 reinelt - * introduced bar.c, moved bar stuff from display.h to bar.h - * - * Revision 1.6 2001/04/27 05:04:57 reinelt - * - * replaced OPEN_MAX with sysconf() - * replaced mktemp() with mkstemp() - * unlock serial port if open() fails - * - * Revision 1.5 2001/03/16 16:40:17 ltoetsch - * implemented time bar - * - * Revision 1.4 2001/02/13 09:00:13 reinelt - * - * prepared framework for GPO's (general purpose outputs) - * - * Revision 1.3 2000/08/10 09:44:09 reinelt - * - * new debugging scheme: error(), info(), debug() - * uses syslog if in daemon mode - * - * Revision 1.2 2000/08/09 09:50:29 reinelt - * - * opened 0.98 development - * removed driver-specific signal-handlers - * added 'quit'-function to driver structure - * added global signal-handler - * - * Revision 1.1 2000/05/02 06:05:00 reinelt - * - * driver for 3Com Palm Pilot added - * - */ - -/* - * - * exported fuctions: - * - * struct LCD PalmPilot[] - * - */ - -#include "config.h" - -#include <stdlib.h> -#include <stdio.h> -#include <string.h> -#include <unistd.h> -#include <errno.h> -#include <termios.h> -#include <fcntl.h> -#include <sys/types.h> -#include <sys/stat.h> - -#include "debug.h" -#include "cfg.h" -#include "lock.h" -#include "display.h" -#include "bar.h" -#include "icon.h" -#include "pixmap.h" - -#ifdef WITH_DMALLOC -#include <dmalloc.h> -#endif - - -static LCD Lcd; -static char *Port=NULL; -static speed_t Speed; -static int Device=-1; - -static int pixel=-1; -static int pgap=0; -static int rgap=0; -static int cgap=0; -static int border=0; -static int icons; - -static int Palm_open (void) -{ - int fd; - pid_t pid; - struct termios portset; - - if ((pid=lock_port(Port))!=0) { - if (pid==-1) - error ("PalmPilot: port %s could not be locked", Port); - else - error ("PalmPilot: port %s is locked by process %d", Port, pid); - return -1; - } - fd = open(Port, O_RDWR | O_NOCTTY | O_NDELAY); - if (fd==-1) { - error ("PalmPilot: open(%s) failed: %s", Port, strerror(errno)); - unlock_port(Port); - return -1; - } - if (tcgetattr(fd, &portset)==-1) { - error ("PalmPilot: tcgetattr(%s) failed: %s", Port, strerror(errno)); - unlock_port(Port); - return -1; - } - cfmakeraw(&portset); - cfsetospeed(&portset, Speed); - if (tcsetattr(fd, TCSANOW, &portset)==-1) { - error ("PalmPilot: tcsetattr(%s) failed: %s", Port, strerror(errno)); - unlock_port(Port); - return -1; - } - return fd; -} - -static void Palm_write (char *string, int len) -{ - if (Device==-1) return; - if (write (Device, string, len)==-1) { - if (errno==EAGAIN) { - usleep(1000); - if (write (Device, string, len)>=0) return; - } - error ("PalmPilot: write(%s) failed: %s", Port, strerror(errno)); - } -} - -int Palm_flush (void) -{ - static unsigned char *bitbuf=NULL; - static unsigned char *rowbuf=NULL; - int xsize, ysize, row, col; - - xsize=2*border+(Lcd.cols-1)*cgap+Lcd.cols*Lcd.xres*pixel+(Lcd.cols*Lcd.xres-1)*pgap; - ysize=2*border+(Lcd.rows-1)*rgap+Lcd.rows*Lcd.yres*pixel+(Lcd.rows*Lcd.yres-1)*pgap; - - if (bitbuf==NULL) { - if ((bitbuf=malloc(xsize*ysize*sizeof(*bitbuf)))==NULL) { - error ("PalmPilot: malloc(%d) failed: %s", xsize*ysize*sizeof(*bitbuf), strerror(errno)); - return -1; - } - } - - if (rowbuf==NULL) { - if ((rowbuf=malloc(((xsize+7)/8)*sizeof(*rowbuf)))==NULL) { - error ("PalmPilot: malloc(%d) failed: %s", ((xsize+7)/8)*sizeof(*rowbuf), strerror(errno)); - return -1; - } - } - - memset (bitbuf, 0, xsize*ysize*sizeof(*bitbuf)); - - for (row=0; row<Lcd.rows*Lcd.yres; row++) { - int y=border+(row/Lcd.yres)*rgap+row*(pixel+pgap); - for (col=0; col<Lcd.cols*Lcd.xres; col++) { - int x=border+(col/Lcd.xres)*cgap+col*(pixel+pgap); - int a, b; - for (a=0; a<pixel; a++) - for (b=0; b<pixel; b++) - bitbuf[y*xsize+x+a*xsize+b]=LCDpixmap[row*Lcd.cols*Lcd.xres+col]; - } - } - - sprintf (rowbuf, "%c%c", xsize, ysize); - Palm_write (rowbuf, 2); - - for (row=0; row<ysize; row++) { - memset (rowbuf, 0, (xsize+7)/8); - for (col=0; col<xsize; col++) { - rowbuf[col/8]<<=1; - rowbuf[col/8]|=bitbuf[row*xsize+col]; - } - rowbuf[xsize/8]<<=(8-xsize%8)&7; - Palm_write (rowbuf, (xsize+7)/8); - } - - return 0; -} - -int Palm_clear (int full) -{ - if (pix_clear()!=0) - return -1; - - if (full) - return Palm_flush(); - - return 0; -} - -int Palm_init (LCD *Self) -{ - char *port, *s; - int speed; - int rows=-1, cols=-1; - int xres=1, yres=-1; - - if (Port) { - free (Port); - Port=NULL; - } - - port=cfg_get (NULL, "Port", NULL); - if (port==NULL || *port=='\0') { - error ("PalmPilot: no 'Port' entry in %s", cfg_source()); - return -1; - } - Port=strdup(port); - - if (cfg_number(NULL, "Speed", 19200, 1200,19200, &speed)<0) return -1; - - switch (speed) { - case 1200: - Speed=B1200; - break; - case 2400: - Speed=B2400; - break; - case 4800: - Speed=B4800; - break; - case 9600: - Speed=B9600; - break; - case 19200: - Speed=B19200; - break; - default: - error ("PalmPilot: unsupported speed '%d' in %s", speed, cfg_source()); - return -1; - } - - debug ("using port %s at %d baud", Port, speed); - - if (sscanf(s=cfg_get(NULL, "size", "20x4"), "%dx%d", &cols, &rows)!=2 || rows<1 || cols<1) { - error ("PalmPilot: bad size '%s'", s); - return -1; - } - - if (sscanf(s=cfg_get(NULL, "font", "6x8"), "%dx%d", &xres, &yres)!=2 || xres<5 || yres<7) { - error ("PalmPilot: bad font '%s'", s); - return -1; - } - - if (sscanf(s=cfg_get(NULL, "pixel", "1+0"), "%d+%d", &pixel, &pgap)!=2 || pixel<1 || pgap<0) { - error ("PalmPilot: bad pixel '%s'", s); - return -1; - } - - if (sscanf(s=cfg_get(NULL, "gap", "0x0"), "%dx%d", &cgap, &rgap)!=2 || cgap<-1 || rgap<-1) { - error ("PalmPilot: bad gap '%s'", s); - return -1; - } - if (rgap<0) rgap=pixel+pgap; - if (cgap<0) cgap=pixel+pgap; - - if (cfg_number(NULL, "border", 0, 0, 1000000, &border)<0) return -1; - - if (pix_init (rows, cols, xres, yres)!=0) { - error ("PalmPilot: pix_init(%d, %d, %d, %d) failed", rows, cols, xres, yres); - return -1; - } - - if (cfg_number(NULL, "Icons", 0, 0, 8, &icons) < 0) return -1; - if (icons>0) { - info ("allocating %d icons", icons); - icon_init(rows, cols, xres, yres, 8, icons, pix_icon); - } - - - Self->rows=rows; - Self->cols=cols; - Self->xres=xres; - Self->yres=yres; - Self->icons=icons; - Lcd=*Self; - - // Device=open ("PalmOrb.dat", O_WRONLY | O_CREAT | O_TRUNC, 0644); - Device=Palm_open(); - if (Device==-1) return -1; - - pix_clear(); - - return 0; -} - -int Palm_put (int row, int col, char *text) -{ - return pix_put (row, col, text); -} - -int Palm_bar (int type, int row, int col, int max, int len1, int len2) -{ - return pix_bar (type, row, col, max, len1, len2); -} - -int Palm_icon (int num, int seq, int row, int col) -{ - return icon_draw (num, seq, row, col); -} - -int Palm_quit (void) -{ - debug ("closing port %s", Port); - close (Device); - unlock_port (Port); - return 0; -} - -LCD PalmPilot[] = { - { name: "PalmPilot", - rows: 0, - cols: 0, - xres: 0, - yres: 0, - bars: BAR_L | BAR_R | BAR_U | BAR_D | BAR_H2 | BAR_V2 | BAR_T, - icons: 0, - gpos: 0, - init: Palm_init, - clear: Palm_clear, - put: Palm_put, - bar: Palm_bar, - icon: Palm_icon, - gpo: NULL, - flush: Palm_flush, - quit: Palm_quit }, - { NULL } -}; @@ -6,21 +6,24 @@ Lcd4Linux NextGeneration porting status Cwlinux -> Ported (Text,Bar,Icon) + blacklight [gpo,gpi,inverted text,relay] HD44780 -> Ported (Text,Bar,Icon) + soft brightness,'busy flag',gpo [soft contrast] M50530 -> Ported (Text,Bar,Icon) + gpo - MatrixOrbital -> Ported (Text,Bar,Icon) + blacklight,contrast,gpo,pwm,rpm [?] - T6963* -> Ported (Text,Bar,Icon) [?] - USBLCD -> Ported (Text,Bar,Icon) [?] + MatrixOrbital -> Ported (Text,Bar,Icon) + blacklight,contrast,gpo,pwm,rpm + T6963* -> Ported (Text,Bar,Icon) + USBLCD -> Ported (Text,Bar,Icon) XWindow* -> Ported (Text,Bar,Icon) [gnome applet ?] + Raster* -> Ported (Text,Bar,Icon) BeckmannEgle -> Curses -> MilfordInstruments -> - PalmPilot -> - Raster* -> - SIN* -> + + PalmPilot -> Obsolete + SIN -> Obsolete * graphic displays + + PLUGINS : format : status (functions) {old tokens} [todo] ------------------------------------------------------------ plugin_apm -> Finished (apm) {battery: bd bp bs} @@ -39,12 +42,13 @@ Lcd4Linux NextGeneration porting status plugin_uname -> Finished (uname) {o v} plugin_wireless -> Finished (level, noise, quality, ...) {ws wl wn} plugin_xmms -> Finished (xmms) NEW + plugin_isdn -> Finished (info, cps) {ic ii im io it} + plugin_uptime -> Finished (uptime) NEW + plugin_time -> Finished (time strftime) NEW + plugin_pop3 -> Finished (POP3check) {e* u*} (special plugins : plugin_cfg, plugin_math, plugin_string) -tokens not ported : -mail {e* u*} -ISDN {ic ii im io it} TODO : task {assigned to} -------- @@ -1,228 +0,0 @@ -/* $Id: mail.c,v 1.16 2004/03/03 03:47:04 reinelt Exp $ - * - * email specific functions - * - * Copyright 2001 Axel Ehnert <axel@ehnert.net> - * - * This file is part of LCD4Linux. - * - * LCD4Linux 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, or (at your option) - * any later version. - * - * LCD4Linux 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. - * - * - * $Log: mail.c,v $ - * Revision 1.16 2004/03/03 03:47:04 reinelt - * big patch from Martin Hejl: - * - use qprintf() where appropriate - * - save CPU cycles on gettimeofday() - * - add quit() functions to free allocated memory - * - fixed lots of memory leaks - * - * Revision 1.15 2004/01/29 04:40:02 reinelt - * every .c file includes "config.h" now - * - * Revision 1.14 2004/01/09 04:16:06 reinelt - * added 'section' argument to cfg_get(), but NULLed it on all calls by now. - * - * Revision 1.13 2003/10/05 17:58:50 reinelt - * libtool junk; copyright messages cleaned up - * - * Revision 1.12 2003/02/22 07:53:10 reinelt - * cfg_get(key,defval) - * - * Revision 1.11 2001/09/12 05:58:16 reinelt - * fixed bug in mail2.c - * - * Revision 1.10 2001/09/12 05:37:22 reinelt - * - * fixed a bug in seti.c (file was never closed, lcd4linux run out of fd's - * - * improved socket debugging - * - * Revision 1.9 2001/08/05 17:13:29 reinelt - * - * cleaned up inlude of sys/time.h and time.h - * - * Revision 1.8 2001/03/15 15:49:23 ltoetsch - * fixed compile HD44780.c, cosmetics - * - * Revision 1.7 2001/03/15 14:25:05 ltoetsch - * added unread/total news - * - * Revision 1.6 2001/03/14 13:19:29 ltoetsch - * Added pop3/imap4 mail support - * - * Revision 1.5 2001/03/13 08:34:15 reinelt - * - * corrected a off-by-one bug with sensors - * - * Revision 1.4 2001/03/08 09:02:04 reinelt - * - * seti client cleanup - * - * Revision 1.3 2001/02/21 04:48:13 reinelt - * - * big mailbox patch from Axel Ehnert - * thanks to herp for his idea to check mtime of mailbox - * - * Revision 1.2 2001/02/19 00:15:46 reinelt - * - * integrated mail and seti client - * major rewrite of parser and tokenizer to support double-byte tokens - * - * Revision 1.1 2001/02/18 22:11:34 reinelt - * *** empty log message *** - * - */ - -/* - * exported functions: - * - * Mail (int index, int *num) - * returns 0 if ok, -1 if error - * sets num to number of emails in mailbox #index - * - */ - -#define FALSE 0 -#define TRUE 1 - -#include "config.h" - -#include <stdlib.h> -#include <stdio.h> -#include <string.h> -#include <unistd.h> -#include <fcntl.h> -#include <time.h> -#include <sys/ioctl.h> -#include <sys/types.h> -#include <sys/stat.h> - -#include "cfg.h" -#include "debug.h" -#include "mail.h" - -int Mail (int index, int *num, int *unseen) -{ - FILE *fstr; - char buffer[32]; - static int cfgmbx[MAILBOXES+1]={[0 ... MAILBOXES]=TRUE,}; // Mailbox #index configured? - static time_t mbxlt[MAILBOXES+1]={[0 ... MAILBOXES]=0,}; // mtime of Mailbox #index - static int mbxnum[MAILBOXES+1]={[0 ... MAILBOXES]=0,}; // Last calculated # of mails - static time_t now[MAILBOXES+1]={[0 ... MAILBOXES]=0,}; // Last call to procedure at - // for Mailbox #index - char *fnp1; - int v1=0; - int last_line_blank1; // Was the last line blank? - struct stat fst; - int rc; - char *s: - int i; - - char *txt; - char txt1[100]; - - if (index<0 || index>MAILBOXES) return -1; - - if (now[index] == 0) { /* first time, to give faster a chance */ - now[index] = -1-index; - return 0; - } - if (now[index] < -1) { /* wait different time to avoid long startup */ - now[index]++; - return 0; - } - if (now[index] > 0) { /* not first time, delay */ - sprintf(txt1, "Delay_e%d", index); - s= cfg_get(NULL, txt1, "5"); - i=now[index]+atoi(s); - free(s); - if (time(NULL)<=i) - return 0; // no more then 5/Delay_eX seconds after last check? - } - time(&now[index]); // for Mailbox #index - /* - Build the filename from the config - */ - qprintf(buffer, sizeof(buffer), "Mailbox%d", index); - fnp1=cfg_get(NULL, buffer, NULL); - if (fnp1==NULL || *fnp1=='\0') { - cfgmbx[index]=FALSE; // There is now entry for Mailbox #index - } - v1=mbxnum[index]; - /* - Open the file - */ - if (cfgmbx[index]==TRUE) { - /* - Check the last touch of mailbox. Changed? - */ - rc=stat(fnp1, &fst); - if ( rc != 0 ) { - /* - is it pop3, imap4 or nntp? - */ - rc = Mail_pop_imap_news(fnp1, num, unseen); - if (rc == 0) { - free(fnp1); - return 0; - } - else - cfgmbx[index] = FALSE; /* don't try again */ - - error ("Error getting stat of Mailbox%d", index); - return (-1); - } - if ( mbxlt[index] != fst.st_mtime ) { - mbxlt[index]=fst.st_mtime; - - fstr=fopen(fnp1,"r"); - if (fstr != NULL) { - txt=&txt1[0]; - last_line_blank1=TRUE; - v1=0; - - while ( ( fgets ( txt1, 100, fstr ) ) != NULL ) { - txt1[strlen(txt1)-1]='\0'; // cut the newline - /* - Is there a "From ..." line. Count only, if a blank line was directly before this - */ - if ( strncmp (txt1, "From ", 5 ) == 0 ) { - if ( last_line_blank1 == TRUE ) { - v1++; - last_line_blank1 = FALSE; - } - } - if ( strlen (txt1) == 0 ) { - last_line_blank1 = TRUE; - } - else { - last_line_blank1 = FALSE; - } - } - fclose (fstr); - } - } - } - free(fnp1); - /* FIXME look at the Status of Mails */ - *unseen = v1 - mbxnum[index]; - if (*unseen < 0) - *unseen = 0; - mbxnum[index]=v1; - *num=v1; - return (0); -} - @@ -1,50 +0,0 @@ -/* $Id: mail.h,v 1.5 2003/10/05 17:58:50 reinelt Exp $ - * - * email specific functions - * - * Copyright 2001 Axel Ehnert <axel@ehnert.net> - * - * This file is part of LCD4Linux. - * - * LCD4Linux 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, or (at your option) - * any later version. - * - * LCD4Linux 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. - * - * - * $Log: mail.h,v $ - * Revision 1.5 2003/10/05 17:58:50 reinelt - * libtool junk; copyright messages cleaned up - * - * Revision 1.4 2001/03/15 14:25:05 ltoetsch - * added unread/total news - * - * Revision 1.3 2001/03/14 13:19:29 ltoetsch - * Added pop3/imap4 mail support - * - * Revision 1.2 2001/03/08 09:02:04 reinelt - * - * seti client cleanup - * - * Revision 1.1 2001/02/18 22:11:34 reinelt - * *** empty log message *** - * - */ - -#ifndef _MAIL_H -#define _MAIL_H_ - -#define MAILBOXES 9 - -int Mail (int index, int *num, int *unseen); -int Mail_pop_imap_news(char *mbx, int *num, int *unseen); /* mail2.c */ -#endif diff --git a/mail2.c b/mail2.c deleted file mode 100644 index 63cc604..0000000 --- a/mail2.c +++ /dev/null @@ -1,537 +0,0 @@ -/* $Id: mail2.c,v 1.13 2004/03/03 03:47:04 reinelt Exp $ - * - * mail: pop3, imap, news functions - * - * Copyright 2001 Leopold Tötsch <lt@toetsch.at> - * - * This file is part of LCD4Linux. - * - * LCD4Linux 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, or (at your option) - * any later version. - * - * LCD4Linux 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. - * - * - * $Log: mail2.c,v $ - * Revision 1.13 2004/03/03 03:47:04 reinelt - * big patch from Martin Hejl: - * - use qprintf() where appropriate - * - save CPU cycles on gettimeofday() - * - add quit() functions to free allocated memory - * - fixed lots of memory leaks - * - * Revision 1.12 2004/01/30 20:57:56 reinelt - * HD44780 patch from Martin Hejl - * dmalloc integrated - * - * Revision 1.11 2004/01/29 04:40:02 reinelt - * every .c file includes "config.h" now - * - * Revision 1.10 2004/01/09 04:16:06 reinelt - * added 'section' argument to cfg_get(), but NULLed it on all calls by now. - * - * Revision 1.9 2003/10/05 17:58:50 reinelt - * libtool junk; copyright messages cleaned up - * - * Revision 1.8 2003/02/22 07:53:10 reinelt - * cfg_get(key,defval) - * - * Revision 1.7 2002/12/05 19:23:01 reinelt - * fixed undefined operations found by gcc3 - * - * Revision 1.6 2001/09/12 06:17:22 reinelt - * *** empty log message *** - * - * Revision 1.5 2001/09/12 05:58:16 reinelt - * fixed bug in mail2.c - * - * Revision 1.4 2001/03/16 09:28:08 ltoetsch - * bugfixes - * - * Revision 1.3 2001/03/15 14:25:05 ltoetsch - * added unread/total news - * - * Revision 1.2 2001/03/15 11:10:53 ltoetsch - * added quit/logout to pop/imap - * - * Revision 1.1 2001/03/14 13:19:29 ltoetsch - * Added pop3/imap4 mail support - * - * - * Exported Functions: - * - * int Mail_pop_imap_news(char *mbox, int *total_mails, int *unseen); - * returns -1 on error, 0 on success - * - */ - -#include "config.h" - -#include <string.h> -#include <stdlib.h> -#include <stdio.h> -#include <unistd.h> -#include <malloc.h> -#include <errno.h> - -#include "debug.h" -#include "cfg.h" -#include "socket.h" - -#ifdef WITH_DMALLOC -#include <dmalloc.h> -#endif - -#define PROTO_UNKNOWN -1 -#define PROTO_POP3 110 -#define PROTO_NNTP 119 -#define PROTO_IMAP4 143 - -/* - * parse_proto() - * - * parse a MailboxN entry in 's' as - * - * proto:[user[:pass]@]machine[:port][/dir] - * - * 's' get's destroyed - * returns 0 on success, -1 on error - * - */ - -static int parse_proto(char *s, int *proto, char **user, char **pass, - char **machine, int *port, char **dir) -{ - struct - { - char *prefix; - int proto; - } - protos[] = - { - { "pop3:", PROTO_POP3 }, - { "nntp:", PROTO_NNTP }, - { "imap4:", PROTO_IMAP4 }, - }; - int i; - char *p, *q; - static char empty[] = ""; - static char INBOX[] = "INBOX"; - - *proto = *port = PROTO_UNKNOWN; - for (i=0; i< sizeof(protos)/sizeof(protos[0]); i++) - { - if (memcmp(s, protos[i].prefix, strlen(protos[i].prefix)) == 0) - { - *proto = *port = protos[i].proto; - break; - } - } - if (*proto == PROTO_UNKNOWN) - return -1; - - p = s + strlen(protos[i].prefix); - /* - * this might fail if user or pass contains a '/' - * - */ - if ((q = strchr(p, '/')) != NULL) - { - /* /dir */ - *dir = q + 1; - *q = '\0'; - } - else - *dir = empty; - - if ((q = strchr(p, '@')) != NULL) - { - /* user, pass is present */ - *machine = q + 1; - *q = '\0'; - *user = p; - if ((q = strchr(p, ':')) != NULL) - { - /* user[:pass] */ - *q = '\0'; - *pass = q+1; - } - else - *pass = empty; - } - else - { - *machine = p; - *user = *pass = empty; - } - - if ((q = strchr(*machine, ':')) != NULL) - { - /* machine[:pass] */ - *q = '\0'; - *port = atoi(q+1); - if (*port <= 0 || *port >= 0xffff) - return -1; - } - if (!**machine) - return -1; - if (*proto == PROTO_POP3 && **dir) - return -1; - if (*proto == PROTO_IMAP4 && !**dir) - *dir = INBOX; - return 0; -} - - -/* write buffer, compare with match */ - -#define BUFLEN 256 -static int wr_rd(int fd, char *buf, char *match, - char *err, char *machine, int port) -{ - int n; - n = write_socket(fd, buf); - if (n <= 0) - { - error("Couldn't write to %s:%d (%s)", machine, port, strerror(errno)); - close(fd); - return -1; - } - n = read_socket_match(fd, buf, BUFLEN-1, match); - if (n <= 0) - { - error("%s %s:%d (%s)", err, machine, port, strerror(errno)); - close(fd); - return -1; - } - return n; -} - -static int check_nntp(char *user, char *pass, char *machine, - int port, char *dir, int *total, int *unseen) -{ - int fd; - int n; - char buf[BUFLEN]; - char line[BUFLEN]; - FILE *fp; - int groups; - int err; - int totg, unsg; - int first; - char *s; - - *total = 0; - *unseen = 0; - - strcpy(buf, (s=cfg_get(NULL, "Newsrc", ".newsrc"))); - if (*buf == 0 || ((fp = fopen(buf, "r")) == NULL)) { - error("Couldn't open .newsrc-file '%s'", buf); - free(s); - return -1; - } - free(s); - fd = open_socket(machine, port); - if (fd < 0) - { - error("Couldn't connect to %s:%d (%s)", machine, port, strerror(errno)); - fclose(fp); - return -1; - } - n = read_socket_match(fd, buf, BUFLEN-1, "20"); /* server ready */ - if (n <= 0) { - error("Server doesn't respond %s:%d (%s)", machine, port, strerror(errno)); - close(fd); - return -1; - } - /* do auth if necessary, this is NOT TESTED */ - if (*user) { - sprintf(buf, "AUTHINFO USER %s\r\n", user); - if (wr_rd(fd, buf, "381", "No AUTH required?", machine, port) <= 0) - return -1; - if (*pass) - { - sprintf(buf, "AUTHINFO PASS %s\r\n", pass); - if (wr_rd(fd, buf, "281", "Wrong PASS?", machine, port) <= 0) - return -1; - } - } - // Fixme: this is badbadbadbad - sleep(2); /* wait for newsserver to read groupinfo */ - groups = 0; - err = 0; - totg = unsg = 0; /* total, unseen */ - while (fgets(line, sizeof(line)-1, fp) && err < 5) { - char group[256]; - char *p; - int smin, smax, lmin, lmax; - - if (sscanf(line, "%255[^:]:", group) != 1) { - error("Couldn't read group in '%s'", line); - err++; - continue; - } - if ((p=strchr(group,':')) != NULL) - *p='\0'; - - /* check dir if it matches group */ - if (*dir && strcmp(dir, group)) - continue; - - sprintf(buf, "GROUP %s\r\n", group); - if (wr_rd(fd, buf, "211", "Wrong Group", machine, port) <= 0) { - err++; - continue; - } - /* answer 211 total smin smax group: */ - sscanf(buf, "211 %*d %d %d", &smin, &smax); - debug("nntp: %s: smin=%d smax=%d", group, smin, smax); - totg += smax-smin-1; - p = strchr(line, ':'); - p++; - first = 1; - while (1) { - lmin = strtol(p, &p, 10); - if (*p == '-') - lmax = strtol(p+1, &p, 10); - else - lmax=lmin; - debug("nntp: %s: lmin=%d lmax=%d", group, lmin, lmax); - if (smax >= lmax) { /* server has more articles */ - if (first) - unsg += smax - lmax; - else - unsg -= lmax-lmin+1; - first = 0; - } - else /* local has higher article ??? */ - break; - if (*p == ',') - p++; - else - break; - } - } /* while fp */ - fclose(fp); - strcpy(buf, "QUIT\r\n"); - wr_rd(fd, buf, "2", "Quit", machine, port); - close(fd); - *unseen = unsg; - *total = totg; - return 0; -} - - -static int check_imap4(char *user, char *pass, char *machine, - int port, char *dir, int *total, int *unseen) -{ - int fd = open_socket(machine, port); - int n; - char buf[BUFLEN]; - char *p; - - *total=0; - *unseen = 0; - - if (fd < 0) - { - error("Couldn't connect to %s:%d (%s)", machine, port, strerror(errno)); - return -1; - } - n = read_socket_match(fd, buf, BUFLEN-1, "* OK"); - if (n <= 0) { - error("Server doesn't respond %s:%d (%s)", machine, port, strerror(errno)); - close(fd); - return -1; - } - sprintf(buf, ". LOGIN %s %s\r\n", user, pass); - if (wr_rd(fd, buf, ". OK", "Wrong User/PASS?", machine, port) <= 0) - return -1; - sprintf(buf, ". STATUS %s (MESSAGES UNSEEN)\r\n", dir); - if (wr_rd(fd, buf, "*", "Wrong dir?", machine, port) <= 0) - return -1; - if ((p = strstr(buf, "MESSAGES")) != NULL) - sscanf(p, "%*s %d", total); - else { - error("Server doesn't provide MESSAGES (%s)", machine, port, strerror(errno)); - close(fd); - return -1; - } - if ((p = strstr(buf, "UNSEEN")) != NULL) - sscanf(p, "%*s %d", unseen); - else { - error("Server doesn't provide UNSEEN (%s)", machine, port, strerror(errno)); - close(fd); - return -1; - } - strcpy(buf,". LOGOUT\r\n"); - wr_rd(fd, buf, "", "LOGOUT", machine, port); - close(fd); - return 0; -} - -static int check_pop3(char *user, char *pass, char *machine, - int port, int *total, int *unseen) -{ - int fd = open_socket(machine, port); - int n; - char buf[BUFLEN]; - - *total=0; - *unseen=0; - - if (fd < 0) - { - error("Couldn't connect to %s:%d (%s)", machine, port, strerror(errno)); - return -1; - } - n = read_socket_match(fd, buf, BUFLEN-1, "+OK"); - if (n <= 0) { - error("Server doesn't respond %s:%d (%s)", machine, port, strerror(errno)); - close(fd); - return -1; - } - if (*user) - { - sprintf(buf, "USER %s\r\n", user); - if (wr_rd(fd, buf, "+OK", "Wrong USER?", machine, port) <= 0) - return -1; - } - if (*pass) - { - sprintf(buf, "PASS %s\r\n", pass); - if (wr_rd(fd, buf, "+OK", "Wrong PASS?", machine, port) <= 0) - return -1; - } - sprintf(buf, "STAT\r\n"); - if (wr_rd(fd, buf, "+OK", "Wrong STAT answer?", machine, port) <= 0) - return -1; - sscanf(buf, "+OK %d", total); - if (*total) { - sprintf(buf, "LAST\r\n"); - if (wr_rd(fd, buf, "+OK", "Wrong LAST answer?", machine, port) <= 0) - return -1; - sscanf(buf, "+OK %d", unseen); - *unseen = *total - *unseen; - } - strcpy(buf, "QUIT\r\n"); - wr_rd(fd, buf, "+OK", "Quit", machine, port); - close(fd); - return 0; -} - -int Mail_pop_imap_news(char *s, int *total, int *unseen) -{ - int proto, port, ret; - char *user, *pass, *machine, *dir, *ds; - - ds = strdup(s); - if (ds == NULL) - { - error("Out of mem"); - return -1; - } - ret = parse_proto(ds, &proto, &user, &pass, - &machine, &port, &dir) ; - if (ret < 0) - error("Not a pop3/imap4 mailbox"); - else - ret = (proto == PROTO_POP3) ? - check_pop3(user, pass, machine, port, total, unseen) : - (proto == PROTO_NNTP) ? - check_nntp(user, pass, machine, port, dir, total, unseen) : - check_imap4(user, pass, machine, port, dir, total, unseen); - free(ds); - return ret; -} - -#ifdef STANDALONE - -/* - * test parse_proto with some garbage - * - */ - -int foreground = 1; -int debugging = 3; - -/* - * for STANDALONE tests, disable Text driver and - * - * cc -DSTANDALONE mail2.c socket.c debug.c -g -Wall -o mail2 - * - */ - -#ifdef CHECK_PARSER - -static int test(char *s) -{ - int ret; - int proto, port; - char *user, *pass, *machine, *dir, *ds; - - ds = strdup(s); - ret = parse_proto(ds, &proto, &user, &pass, - &machine, &port, &dir) ; - printf("parse_proto(%s) ret=%d\n", s, ret); - if (!ret) - printf( - "\tproto='%d'\n" - "\tuser='%s'\n" - "\tpass='%s'\n" - "\tmachine='%s'\n" - "\tport='%d'\n" - "\tdir='%s'\n", - proto,user,pass,machine,port,dir); - free(ds); - return ret; -} -#endif - -int main(int argc, char *argv[]) -{ - -#ifdef CHECK_PARSER - int i, ret; - /* proto:[user[:pass]@]machine[:port][/dir] */ - char *t[] = - { - "pop3:sepp:Geheim@Rechner:123", - "pop3:sepp@Rechner", - "pop3:Rechner:123", - "imap4:sepp:Geheim@Rechner/dir@/:pfad", - "imap4:sepp:Geheim@Rechner", - "imap4sepp:Geheim@Rechner/dir@/:pfad", - "imap4:sepp:Geheim/Rechner/dir@/:pfad", - "pop3:sepp@:", - 0 - }; - - ret = 0; - if (argc > 1) - ret |= test(argv[1]); - else - for (i = 0; t[i]; i++) - ret |= test(t[i]); - return ret; -# else - - int total = -1, unseen = -1; - char *mbx = "imap4:user:pass@server/folder/file"; - int ret = Mail_pop_imap(mbx, &total, &unseen); - printf("ret = %d, total = %d unseen = %d\n", ret, total, unseen); - return ret; - -# endif -} - -#endif diff --git a/socket.c b/socket.c deleted file mode 100644 index 5102bda..0000000 --- a/socket.c +++ /dev/null @@ -1,228 +0,0 @@ -/* $Id: socket.c,v 1.7 2004/01/29 04:40:03 reinelt Exp $ - * - * simple socket functions - * - * Copyright 2001 Leopold Tötsch <lt@toetsch.at> - * - * This file is part of LCD4Linux. - * - * LCD4Linux 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, or (at your option) - * any later version. - * - * LCD4Linux 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. - * - * - * $Log: socket.c,v $ - * Revision 1.7 2004/01/29 04:40:03 reinelt - * every .c file includes "config.h" now - * - * Revision 1.6 2003/10/05 17:58:50 reinelt - * libtool junk; copyright messages cleaned up - * - * Revision 1.5 2002/12/05 19:09:57 reinelt - * patches for gcc-3.2 - * - * Revision 1.4 2001/09/12 05:58:16 reinelt - * fixed bug in mail2.c - * - * Revision 1.3 2001/09/12 05:37:22 reinelt - * - * fixed a bug in seti.c (file was never closed, lcd4linux run out of fd's - * - * improved socket debugging - * - * Revision 1.2 2001/03/15 14:25:05 ltoetsch - * added unread/total news - * - * Revision 1.1 2001/03/14 13:19:29 ltoetsch - * Added pop3/imap4 mail support - * - * - */ - -/* - * Exported Functions: - * - * int open_socket(char *machine, int port); - * - * open and connect to socket on machine:port - * returns fd on success or -1 on error - * - * - * int read_socket(int fd, char *buf, size_t size); - * - * read maximum size chars into buf - * returns n byte read, 0 on timeout, -1 on error - * - * - * int read_socket_match(int fd, char *buf, size_t size, char *match); - * - * read maximum size chars into buf and check if the start of line - * matches 'match' - * returns n on successful match, 0 on timeout/mismatch, -1 on error - * - * - * int write_socket(int fd, char *string); - * - * write string to socket fd - * returns n byte written, -1 on error - * - * with debuglevel 3, traffic on socket is logged - * - */ - -#include "config.h" - -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <errno.h> -#include <ctype.h> -#include <unistd.h> -#include <sys/types.h> -#include <sys/time.h> -#include <sys/socket.h> -#include <netinet/in.h> -#include <netdb.h> - -#include "debug.h" - -#define TIMEOUT 5 /* 5 seconds timeout */ - - -static char *quotemeta (char *string) -{ - static char buffer[256]; - char *s, *p; - - p=buffer; - for (s=string; *s; s++) { - if (isprint(*s)) { - *p++=*s; - } else { - switch (*s) { - case '\r': - *p++='\\'; - *p++='r'; - break; - case '\n': - *p++='\\'; - *p++='n'; - break; - default: - p+=sprintf(p, "<\\%03o>", (int)*s); - } - } - if ((p-buffer)>240) { - *p++='.'; - *p++='.'; - *p++='.'; - break; - } - } - - *p='\0'; - return buffer; -} - -static char *del_pass(char *s) -{ - char *p; - /* del pop3 pass from log */ - if (memcmp(s, "PASS ", 5) == 0) - for (p = s+5; *p && *p != '\r'; p++) - *p = '*'; - /* del imap4 pass from log */ - else if (memcmp(s, ". LOGIN", 7) == 0) - for (p = s + strlen(s)-3 ; p > s && *p != ' '; p--) - *p = '*'; - return s; -} - - -static void sockdebug (char dir, int len, char *string) { - - // delete passwords from log - if (dir=='>') { - del_pass (string); - } - message (3, "%c[%2d] %s", dir, len, quotemeta(string)); -} - - -int open_socket(char *machine, int port) -{ - struct hostent *addr; - struct sockaddr_in s; - int fd; - - addr = gethostbyname (machine); - if (addr) - memcpy (&s.sin_addr, addr->h_addr, sizeof (struct in_addr)); - else - return -1; - - fd = socket (AF_INET, SOCK_STREAM, 0); - if (fd < 0) - return -1; - - s.sin_family = AF_INET; - s.sin_port = htons (port); - - if (connect (fd, (struct sockaddr *)&s, sizeof (s)) < 0) - return -1; - return fd; -} - -int read_socket(int fd, char *buf, size_t size) -{ - fd_set readfds; - struct timeval tv; - int n; - - FD_ZERO(&readfds); - FD_SET(fd, &readfds); - tv.tv_sec = TIMEOUT; - tv.tv_usec = 0; - - if (select(fd+1, &readfds, NULL, NULL, &tv) > 0) - n = read(fd, buf, size); - else - n = 0; - - if (n >= 0) - buf[n] = '\0'; - else - buf[0] = '\0'; - sockdebug('<', n, buf); - return n; -} - -int read_socket_match(int fd, char *buf, size_t size, char *match) -{ - int n = read_socket(fd, buf, size); - int len; - if (n <= 0) - return n; - len = strlen(match); - if (n >= len && memcmp(buf, match, len) == 0) - return n; - return 0; -} - -int write_socket(int fd, char *buf) -{ - int n = write(fd, buf, strlen(buf)); - sockdebug('>', n, del_pass(buf)); - return n; -} - diff --git a/socket.h b/socket.h deleted file mode 100644 index ef9e26a..0000000 --- a/socket.h +++ /dev/null @@ -1,45 +0,0 @@ -/* $Id: socket.h,v 1.2 2003/10/05 17:58:50 reinelt Exp $ - * - * simple socket functions - * - * Copyright 2001 Leopold Tötsch <lt@toetsch.at> - * - * This file is part of LCD4Linux. - * - * LCD4Linux 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, or (at your option) - * any later version. - * - * LCD4Linux 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. - * - * - * $Log: socket.h,v $ - * Revision 1.2 2003/10/05 17:58:50 reinelt - * libtool junk; copyright messages cleaned up - * - * Revision 1.1 2001/03/14 13:19:29 ltoetsch - * Added pop3/imap4 mail support - * - * - */ - -#ifndef __SOCKET_H_ -#define __SOCKET_H_ - -int open_socket(char *machine, int port); -int read_socket(int fd, char *buf, size_t size); -int read_socket_match(int fd, char *buf, size_t size, char *match); -int write_socket(int fd, char *buf); - -#endif - - - @@ -1,151 +0,0 @@ -/* $Id: wifi.c,v 1.7 2004/03/03 03:47:04 reinelt Exp $ - * - * WIFI specific functions - * - * Copyright 2003 Xavier Vello <xavier66@free.fr> - * - * based on lcd4linux/isdn.c which is - * Copyright 1999, 2000 Michael Reinelt <reinelt@eunet.at> - * - * This file is part of LCD4Linux. - * - * LCD4Linux 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, or (at your option) - * any later version. - * - * LCD4Linux 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. - * - * - * $Log: wifi.c,v $ - * Revision 1.7 2004/03/03 03:47:04 reinelt - * big patch from Martin Hejl: - * - use qprintf() where appropriate - * - save CPU cycles on gettimeofday() - * - add quit() functions to free allocated memory - * - fixed lots of memory leaks - * - * Revision 1.6 2004/01/29 04:40:03 reinelt - * every .c file includes "config.h" now - * - * Revision 1.5 2004/01/09 04:16:06 reinelt - * added 'section' argument to cfg_get(), but NULLed it on all calls by now. - * - * Revision 1.4 2004/01/06 22:33:14 reinelt - * Copyright statements cleaned up - * - * Revision 1.3 2003/12/01 07:08:51 reinelt - * - * Patches from Xavier: - * - WiFi: make interface configurable - * - "quiet" as an option from the config file - * - ignore missing "MemShared" on Linux 2.6 - * - * Revision 1.2 2003/11/28 18:34:55 nicowallmeier - * Minor bugfixes - * - * Revision 1.1 2003/11/14 05:59:37 reinelt - * added wifi.c wifi.h which have been forgotten at the last checkin - * - */ - -/* - * exported functions: - * - * Wifi (int *signal, int *link, int *noise) - * returns 0 if ok, -1 if error - * sets *signal to signal level (which determines the rate) - * sets *link to link quality - * sets *noise to noise level (reverse of link quality) - * - */ - -#include "config.h" - -#include <stdlib.h> -#include <stdio.h> -#include <string.h> -#include <unistd.h> -#include <errno.h> -#include <fcntl.h> -#include <sys/ioctl.h> -#include <sys/types.h> - -#include "debug.h" -#include "wifi.h" -#include "filter.h" -#include "cfg.h" - -int Wifi (int *signal, int *link, int *noise) -{ - int ws, wl, wn; - static int fd=-2; - char buffer[4096]; - char *p; - - char *interface=cfg_get(NULL, "Wifi.Interface", "wlan0"); - - *signal=0; - *link=0; - *noise=0; - - if (fd==-1) return -1; - - if (fd==-2) { - fd = open("/proc/net/wireless", O_RDONLY); // the real procfs file - //fd = open("/wireless", O_RDONLY); // a fake file for testing - if (fd==-1) { - error ("open(/proc/net/wireless) failed: %s", strerror(errno)); - return -1; - } - debug ("open(/proc/net/wireless)=%d", fd); - } - - if (lseek(fd, 0L, SEEK_SET)!=0) { - error ("lseek(/proc/net/wireless) failed: %s", strerror(errno)); - fd=-1; - return -1; - } - - if (read (fd, &buffer, sizeof(buffer)-1)==-1) { - error("read(/proc/net/wireless) failed: %s", strerror(errno)); - fd=-1; - return -1; - } - - p=strstr(buffer, interface); - if (p!=NULL) { - // TODO : size of interface ?? - if (sscanf(p+13, "%d", &wl)!=1) { - error ("parse(/proc/net/wireless) failed: unknown format"); - fd=-1; - return -1; - } - if (sscanf(p+19, "%d", &ws)!=1) { - error ("parse(/proc/net/wireless) failed: unknown format"); - fd=-1; - return -1; - } - if (sscanf(p+25, "%d", &wn)!=1) { - error ("parse(/proc/net/wireless) failed: unknown format"); - fd=-1; - return -1; - } - } else { - error("read(/proc/net/wireless) failed: %s", strerror(errno)); - fd=-1; - return -1; - } - *signal=ws; - *link=wl; - *noise=wn; - free(interface); - return 0; -} @@ -1,41 +0,0 @@ -/* $Id: wifi.h,v 1.2 2004/01/06 22:33:14 reinelt Exp $ - * - * WIFI specific functions - * - * Copyright 2003 Xavier Vello <xavier66@free.fr> - * - * based on lcd4linux/isdn.c which is - * Copyright 1999, 2000 Michael Reinelt <reinelt@eunet.at> - * - * This file is part of LCD4Linux. - * - * LCD4Linux 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, or (at your option) - * any later version. - * - * LCD4Linux 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. - * - * - * $Log: wifi.h,v $ - * Revision 1.2 2004/01/06 22:33:14 reinelt - * Copyright statements cleaned up - * - * Revision 1.1 2003/11/14 05:59:37 reinelt - * added wifi.c wifi.h which have been forgotten at the last checkin - * - */ - -#ifndef _WIFI_H_ -#define _WIFI_H_ - -int Wifi (int *signal, int *link, int *noise); - -#endif |