From 31012e7a29bd9f7a05d7daa928d979e604b66e29 Mon Sep 17 00:00:00 2001 From: reinelt <> Date: Tue, 25 May 2004 19:47:12 +0000 Subject: [lcd4linux @ 2004-05-25 19:47:11 by reinelt] Status updated obsolete files removed --- PalmPilot.c | 381 ------------------------------------------ Status | 22 ++- mail.c | 228 -------------------------- mail.h | 50 ------ mail2.c | 537 ------------------------------------------------------------ socket.c | 228 -------------------------- socket.h | 45 ----- wifi.c | 151 ----------------- wifi.h | 41 ----- 9 files changed, 13 insertions(+), 1670 deletions(-) delete mode 100644 PalmPilot.c delete mode 100644 mail.c delete mode 100644 mail.h delete mode 100644 mail2.c delete mode 100644 socket.c delete mode 100644 socket.h delete mode 100644 wifi.c delete mode 100644 wifi.h 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 - * - * 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 -#include -#include -#include -#include -#include -#include -#include -#include - -#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 -#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; row0) { - 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 } -}; diff --git a/Status b/Status index 61a348b..a177724 100644 --- a/Status +++ b/Status @@ -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} -------- diff --git a/mail.c b/mail.c deleted file mode 100644 index 68f29b6..0000000 --- a/mail.c +++ /dev/null @@ -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 - * - * 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 -#include -#include -#include -#include -#include -#include -#include -#include - -#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); -} - diff --git a/mail.h b/mail.h deleted file mode 100644 index cba5b38..0000000 --- a/mail.h +++ /dev/null @@ -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 - * - * 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 - * - * 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 -#include -#include -#include -#include -#include - -#include "debug.h" -#include "cfg.h" -#include "socket.h" - -#ifdef WITH_DMALLOC -#include -#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 - * - * 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 -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#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 - * - * 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 - - - diff --git a/wifi.c b/wifi.c deleted file mode 100644 index 9d13d73..0000000 --- a/wifi.c +++ /dev/null @@ -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 - * - * based on lcd4linux/isdn.c which is - * Copyright 1999, 2000 Michael Reinelt - * - * 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 -#include -#include -#include -#include -#include -#include -#include - -#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; -} diff --git a/wifi.h b/wifi.h deleted file mode 100644 index a1b4a1f..0000000 --- a/wifi.h +++ /dev/null @@ -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 - * - * based on lcd4linux/isdn.c which is - * Copyright 1999, 2000 Michael Reinelt - * - * 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 -- cgit v1.2.3