From cafef33d38d19a9075897b7484a5cb2c594da1da Mon Sep 17 00:00:00 2001 From: ltoetsch Date: Thu, 15 Mar 2001 14:25:05 +0000 Subject: [lcd4linux @ 2001-03-15 14:25:05 by ltoetsch] added unread/total news git-svn-id: https://ssl.bulix.org/svn/lcd4linux/trunk@124 3ae390bd-cb1e-0410-b409-cd5a39f66f1f --- CREDITS | 2 +- NEWS | 2 + README | 14 +++- TODO | 3 + configure | 207 ++++++++++++++++++++++++++------------------------ display.c | 7 +- lcd4linux.conf.sample | 16 ++-- mail.c | 9 ++- mail.h | 7 +- mail2.c | 129 +++++++++++++++++++++++++++++-- socket.c | 7 +- 11 files changed, 278 insertions(+), 125 deletions(-) diff --git a/CREDITS b/CREDITS index c814a41..15d7af1 100644 --- a/CREDITS +++ b/CREDITS @@ -5,7 +5,7 @@ Herbert Rosmanith Leopold Tötsch PNG driver - POP & IMAP client + POP, IMAP & NEWS client simple web interface lots of (well, sometimes too much :-) ideas diff --git a/NEWS b/NEWS index 8bf3ffb..8cf0b70 100644 --- a/NEWS +++ b/NEWS @@ -47,3 +47,5 @@ lcd4linux-0.98 (which is propably incorrect for normal mbox) - added another verbose level (-vvv) for debugging socket traffic + +- added nntp support for count of news/unread messages in subscribed NGs diff --git a/README b/README index 70eeba1..2970b86 100644 --- a/README +++ b/README @@ -1,5 +1,5 @@ # -# $Id: README,v 1.18 2001/03/14 13:19:29 ltoetsch Exp $ +# $Id: README,v 1.19 2001/03/15 14:25:05 ltoetsch Exp $ # This is the README file for lcd4linux @@ -158,16 +158,26 @@ Data-specific options: battery: Battwarning 10 (default 10) Mailbox: - The option string may be a plain mbox file or a pop3/imap4 server + The option string may be a plain mbox file or a pop3/imap4/nntp server string with the following format: pop3:[user[:pass]@]machine[:port] imap4:[user[:pass]@]machine[:port][/dir] + nntp:[user[:pass]@]machine[:port][/dir] Port defaults to 110 and 143 respectively. If /dir is not given, INBOX is assumed. + If dir is given for nntp: it should be a valid group name + with '.' separating items + If dir is not given for nntp: all/unread news of subscribed groups + from Newsrc are calcualted. Delay_e1..e9 delay in seconds for querying the MailboxN (default 5) + Newsrc ... path/name of your .newsrc file containing subscribed news + + Note: authorization on newsservers is untested. + Note: user and pass may not contain a '/' with above syntax, I hope + that's ok. Driver-specific options: diff --git a/TODO b/TODO index 939fbb1..a7c15ca 100644 --- a/TODO +++ b/TODO @@ -77,3 +77,6 @@ add a new Token 'nc' for 'network collisions' 2001-03-14 Michael Reinelt add translation tables ('german umlauts' don't follow any scheme on most displays) + +2001-03-15 Leopold Toetsch +Text display has troubles with '\r' diff --git a/configure b/configure index 499aad8..769afc7 100755 --- a/configure +++ b/configure @@ -1,7 +1,7 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated automatically using autoconf version 2.13 +# Generated automatically using autoconf version 2.14 # Copyright (C) 1992, 93, 94, 95, 96 Free Software Foundation, Inc. # # This configure script is free software; the Free Software Foundation @@ -344,7 +344,7 @@ EOF verbose=yes ;; -version | --version | --versio | --versi | --vers) - echo "configure generated by autoconf version 2.13" + echo "configure generated by autoconf version 2.14" exit 0 ;; -with-* | --with-*) @@ -1680,6 +1680,7 @@ else /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char gethostbyname(); +char (*f)(); int main() { @@ -1689,12 +1690,12 @@ int main() { #if defined (__stub_gethostbyname) || defined (__stub___gethostbyname) choke me #else -gethostbyname(); +f = gethostbyname; #endif ; return 0; } EOF -if { (eval echo configure:1698: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1699: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_gethostbyname=yes" else @@ -1715,7 +1716,7 @@ fi if test $ac_cv_func_gethostbyname = no; then echo $ac_n "checking for gethostbyname in -lnsl""... $ac_c" 1>&6 -echo "configure:1719: checking for gethostbyname in -lnsl" >&5 +echo "configure:1720: checking for gethostbyname in -lnsl" >&5 ac_lib_var=`echo nsl'_'gethostbyname | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -1723,7 +1724,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lnsl $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1739: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -1764,12 +1765,12 @@ fi # -lsocket must be given before -lnsl if both are needed. # We assume that if connect needs -lnsl, so does gethostbyname. echo $ac_n "checking for connect""... $ac_c" 1>&6 -echo "configure:1768: checking for connect" >&5 +echo "configure:1769: checking for connect" >&5 if eval "test \"`echo '$''{'ac_cv_func_connect'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1798: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_connect=yes" else @@ -1813,7 +1815,7 @@ fi if test $ac_cv_func_connect = no; then echo $ac_n "checking for connect in -lsocket""... $ac_c" 1>&6 -echo "configure:1817: checking for connect in -lsocket" >&5 +echo "configure:1819: checking for connect in -lsocket" >&5 ac_lib_var=`echo socket'_'connect | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -1821,7 +1823,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lsocket $X_EXTRA_LIBS $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1838: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -1856,12 +1858,12 @@ fi # gomez@mi.uni-erlangen.de says -lposix is necessary on A/UX. echo $ac_n "checking for remove""... $ac_c" 1>&6 -echo "configure:1860: checking for remove" >&5 +echo "configure:1862: checking for remove" >&5 if eval "test \"`echo '$''{'ac_cv_func_remove'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1891: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_remove=yes" else @@ -1905,7 +1908,7 @@ fi if test $ac_cv_func_remove = no; then echo $ac_n "checking for remove in -lposix""... $ac_c" 1>&6 -echo "configure:1909: checking for remove in -lposix" >&5 +echo "configure:1912: checking for remove in -lposix" >&5 ac_lib_var=`echo posix'_'remove | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -1913,7 +1916,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lposix $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1931: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -1948,12 +1951,12 @@ fi # BSDI BSD/OS 2.1 needs -lipc for XOpenDisplay. echo $ac_n "checking for shmat""... $ac_c" 1>&6 -echo "configure:1952: checking for shmat" >&5 +echo "configure:1955: checking for shmat" >&5 if eval "test \"`echo '$''{'ac_cv_func_shmat'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1984: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_shmat=yes" else @@ -1997,7 +2001,7 @@ fi if test $ac_cv_func_shmat = no; then echo $ac_n "checking for shmat in -lipc""... $ac_c" 1>&6 -echo "configure:2001: checking for shmat in -lipc" >&5 +echo "configure:2005: checking for shmat in -lipc" >&5 ac_lib_var=`echo ipc'_'shmat | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -2005,7 +2009,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lipc $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2024: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -2049,7 +2053,7 @@ fi # libraries we check for below, so use a different variable. # --interran@uluru.Stanford.EDU, kb@cs.umb.edu. echo $ac_n "checking for IceConnectionNumber in -lICE""... $ac_c" 1>&6 -echo "configure:2053: checking for IceConnectionNumber in -lICE" >&5 +echo "configure:2057: checking for IceConnectionNumber in -lICE" >&5 ac_lib_var=`echo ICE'_'IceConnectionNumber | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -2057,7 +2061,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lICE $X_EXTRA_LIBS $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2076: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -2094,7 +2098,7 @@ fi echo $ac_n "checking which drivers to compile""... $ac_c" 1>&6 -echo "configure:2098: checking which drivers to compile" >&5 +echo "configure:2102: checking which drivers to compile" >&5 # Check whether --with-drivers or --without-drivers was given. if test "${with_drivers+set}" = set; then withval="$with_drivers" @@ -2285,12 +2289,12 @@ fi echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6 -echo "configure:2289: checking for ANSI C header files" >&5 +echo "configure:2293: checking for ANSI C header files" >&5 if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -2298,7 +2302,7 @@ else #include EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2302: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:2306: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -2315,7 +2319,7 @@ rm -f conftest* if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat > conftest.$ac_ext < EOF @@ -2333,7 +2337,7 @@ fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat > conftest.$ac_ext < EOF @@ -2354,7 +2358,7 @@ if test "$cross_compiling" = yes; then : else cat > conftest.$ac_ext < #define ISLOWER(c) ('a' <= (c) && (c) <= 'z') @@ -2365,7 +2369,7 @@ if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2); exit (0); } EOF -if { (eval echo configure:2369: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:2373: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then : else @@ -2393,12 +2397,12 @@ for ac_hdr in dirent.h sys/ndir.h sys/dir.h ndir.h do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr that defines DIR""... $ac_c" 1>&6 -echo "configure:2397: checking for $ac_hdr that defines DIR" >&5 +echo "configure:2401: checking for $ac_hdr that defines DIR" >&5 if eval "test \"`echo '$''{'ac_cv_header_dirent_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include <$ac_hdr> @@ -2406,7 +2410,7 @@ int main() { DIR *dirp = 0; ; return 0; } EOF -if { (eval echo configure:2410: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:2414: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* eval "ac_cv_header_dirent_$ac_safe=yes" else @@ -2431,7 +2435,7 @@ done # Two versions of opendir et al. are in -ldir and -lx on SCO Xenix. if test $ac_header_dirent = dirent.h; then echo $ac_n "checking for opendir in -ldir""... $ac_c" 1>&6 -echo "configure:2435: checking for opendir in -ldir" >&5 +echo "configure:2439: checking for opendir in -ldir" >&5 ac_lib_var=`echo dir'_'opendir | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -2439,7 +2443,7 @@ else ac_save_LIBS="$LIBS" LIBS="-ldir $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2458: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -2472,7 +2476,7 @@ fi else echo $ac_n "checking for opendir in -lx""... $ac_c" 1>&6 -echo "configure:2476: checking for opendir in -lx" >&5 +echo "configure:2480: checking for opendir in -lx" >&5 ac_lib_var=`echo x'_'opendir | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -2480,7 +2484,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lx $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2499: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -2514,12 +2518,12 @@ fi fi echo $ac_n "checking for sys/wait.h that is POSIX.1 compatible""... $ac_c" 1>&6 -echo "configure:2518: checking for sys/wait.h that is POSIX.1 compatible" >&5 +echo "configure:2522: checking for sys/wait.h that is POSIX.1 compatible" >&5 if eval "test \"`echo '$''{'ac_cv_header_sys_wait_h'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -2535,7 +2539,7 @@ wait (&s); s = WIFEXITED (s) ? WEXITSTATUS (s) : 1; ; return 0; } EOF -if { (eval echo configure:2539: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:2543: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_header_sys_wait_h=yes else @@ -2559,17 +2563,17 @@ for ac_hdr in fcntl.h limits.h strings.h sys/ioctl.h sys/time.h syslog.h unistd. do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:2563: checking for $ac_hdr" >&5 +echo "configure:2567: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2573: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:2577: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -2599,17 +2603,17 @@ for ac_hdr in sys/io.h asm/io.h do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:2603: checking for $ac_hdr" >&5 +echo "configure:2607: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2613: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:2617: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -2639,17 +2643,17 @@ for ac_hdr in linux/parport.h linux/ppdev.h do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:2643: checking for $ac_hdr" >&5 +echo "configure:2647: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2653: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:2657: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -2679,17 +2683,17 @@ for ac_hdr in gd/gd.h gd.h do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:2683: checking for $ac_hdr" >&5 +echo "configure:2687: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2693: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:2697: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -2719,17 +2723,17 @@ for ac_hdr in net/if_ppp.h do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:2723: checking for $ac_hdr" >&5 +echo "configure:2727: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2733: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:2737: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -2759,17 +2763,17 @@ for ac_hdr in asm/msr.h do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:2763: checking for $ac_hdr" >&5 +echo "configure:2767: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2773: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:2777: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -2797,12 +2801,12 @@ done echo $ac_n "checking for working const""... $ac_c" 1>&6 -echo "configure:2801: checking for working const" >&5 +echo "configure:2805: checking for working const" >&5 if eval "test \"`echo '$''{'ac_cv_c_const'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:2859: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_c_const=yes else @@ -2872,21 +2876,21 @@ EOF fi echo $ac_n "checking for inline""... $ac_c" 1>&6 -echo "configure:2876: checking for inline" >&5 +echo "configure:2880: checking for inline" >&5 if eval "test \"`echo '$''{'ac_cv_c_inline'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else ac_cv_c_inline=no for ac_kw in inline __inline__ __inline; do cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:2894: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_c_inline=$ac_kw; break else @@ -2912,12 +2916,12 @@ EOF esac echo $ac_n "checking for pid_t""... $ac_c" 1>&6 -echo "configure:2916: checking for pid_t" >&5 +echo "configure:2920: checking for pid_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_pid_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -2945,12 +2949,12 @@ EOF fi echo $ac_n "checking for size_t""... $ac_c" 1>&6 -echo "configure:2949: checking for size_t" >&5 +echo "configure:2953: checking for size_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -2978,12 +2982,12 @@ EOF fi echo $ac_n "checking whether time.h and sys/time.h may both be included""... $ac_c" 1>&6 -echo "configure:2982: checking whether time.h and sys/time.h may both be included" >&5 +echo "configure:2986: checking whether time.h and sys/time.h may both be included" >&5 if eval "test \"`echo '$''{'ac_cv_header_time'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -2992,7 +2996,7 @@ int main() { struct tm *tp; ; return 0; } EOF -if { (eval echo configure:2996: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3000: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_header_time=yes else @@ -3013,12 +3017,12 @@ EOF fi echo $ac_n "checking whether struct tm is in sys/time.h or time.h""... $ac_c" 1>&6 -echo "configure:3017: checking whether struct tm is in sys/time.h or time.h" >&5 +echo "configure:3021: checking whether struct tm is in sys/time.h or time.h" >&5 if eval "test \"`echo '$''{'ac_cv_struct_tm'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -3026,7 +3030,7 @@ int main() { struct tm *tp; tp->tm_sec; ; return 0; } EOF -if { (eval echo configure:3030: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3034: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_struct_tm=time.h else @@ -3047,12 +3051,12 @@ EOF fi echo $ac_n "checking for uid_t in sys/types.h""... $ac_c" 1>&6 -echo "configure:3051: checking for uid_t in sys/types.h" >&5 +echo "configure:3055: checking for uid_t in sys/types.h" >&5 if eval "test \"`echo '$''{'ac_cv_type_uid_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF @@ -3083,13 +3087,13 @@ fi if test $ac_cv_prog_gcc = yes; then echo $ac_n "checking whether ${CC-cc} needs -traditional""... $ac_c" 1>&6 -echo "configure:3087: checking whether ${CC-cc} needs -traditional" >&5 +echo "configure:3091: checking whether ${CC-cc} needs -traditional" >&5 if eval "test \"`echo '$''{'ac_cv_prog_gcc_traditional'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else ac_pattern="Autoconf.*'x'" cat > conftest.$ac_ext < Autoconf TIOCGETP @@ -3107,7 +3111,7 @@ rm -f conftest* if test $ac_cv_prog_gcc_traditional = no; then cat > conftest.$ac_ext < Autoconf TCGETA @@ -3129,7 +3133,7 @@ echo "$ac_t""$ac_cv_prog_gcc_traditional" 1>&6 fi echo $ac_n "checking for 8-bit clean memcmp""... $ac_c" 1>&6 -echo "configure:3133: checking for 8-bit clean memcmp" >&5 +echo "configure:3137: checking for 8-bit clean memcmp" >&5 if eval "test \"`echo '$''{'ac_cv_func_memcmp_clean'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3137,7 +3141,7 @@ else ac_cv_func_memcmp_clean=no else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:3155: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_func_memcmp_clean=yes else @@ -3165,12 +3169,12 @@ echo "$ac_t""$ac_cv_func_memcmp_clean" 1>&6 test $ac_cv_func_memcmp_clean = no && LIBOBJS="$LIBOBJS memcmp.${ac_objext}" echo $ac_n "checking return type of signal handlers""... $ac_c" 1>&6 -echo "configure:3169: checking return type of signal handlers" >&5 +echo "configure:3173: checking return type of signal handlers" >&5 if eval "test \"`echo '$''{'ac_cv_type_signal'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -3187,7 +3191,7 @@ int main() { int i; ; return 0; } EOF -if { (eval echo configure:3191: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3195: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_type_signal=void else @@ -3208,12 +3212,12 @@ EOF for ac_func in gettimeofday putenv select socket strdup strerror strstr strtol uname do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:3212: checking for $ac_func" >&5 +echo "configure:3216: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3245: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -3351,7 +3356,7 @@ do echo "running \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion" exec \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion ;; -version | --version | --versio | --versi | --vers | --ver | --ve | --v) - echo "$CONFIG_STATUS generated by autoconf version 2.13" + echo "$CONFIG_STATUS generated by autoconf version 2.14" exit 0 ;; -help | --help | --hel | --he | --h) echo "\$ac_cs_usage"; exit 0 ;; diff --git a/display.c b/display.c index aaba3a5..1e56e99 100644 --- a/display.c +++ b/display.c @@ -1,4 +1,4 @@ -/* $Id: display.c,v 1.26 2001/03/12 12:39:36 reinelt Exp $ +/* $Id: display.c,v 1.27 2001/03/15 14:25:05 ltoetsch Exp $ * * framework for device drivers * @@ -20,6 +20,9 @@ * * * $Log: display.c,v $ + * Revision 1.27 2001/03/15 14:25:05 ltoetsch + * added unread/total news + * * Revision 1.26 2001/03/12 12:39:36 reinelt * * reworked autoconf a lot: drivers may be excluded, #define's went to config.h @@ -214,7 +217,7 @@ FAMILY Driver[] = { #ifdef WITH_X11 { "X Window System", XWindow }, #endif -#ifdef WITH_Text +#ifdef WITH_TEXT { "X Ncurses Text", Text }, #endif { NULL } diff --git a/lcd4linux.conf.sample b/lcd4linux.conf.sample index 5f14ec1..b083c91 100644 --- a/lcd4linux.conf.sample +++ b/lcd4linux.conf.sample @@ -101,31 +101,35 @@ Overload 2.0 # flash bp-Bar if below Battwarning # I use Row6 "Bat%bp%bs%bd$r10bp+bp" # which gives a nice flash effect -# default 10 +# default is 10 Battwarning 10 SetiDir /etc/setiathome # normal local mbox -Mailbox1 /var/spool/mail/michi +# Mailbox1 /var/spool/mail/michi # POP3 mail @ machine -Mailbox2 pop3:user:pass@machine +# Mailbox2 pop3:user:pass@machine # IMAP4 mail folder @ machine -Mailbox3 imap4:user:pass@machine/folder +# Mailbox3 imap4:user:pass@machine/folder -# Full syntax of pop3/imap4 is: +# News server on 'server' group at.linux +# Mailbox4 nntp:server/at.linux + +# Full syntax of pop3/imap4/nntp is: # [user[:pass]@]machine[:port][/dir] # -# display total/unseen mails of Mailbox3 +# display total/unseen mails/news of Mailbox3 # Row6 "Mails %e3/%u3" # delay query of MailboxN in seconds (default = 5) Delay_e1 5 Delay_e2 20 Delay_e3 20 +Delay_e4 120 Sensor1 /proc/sys/dev/sensors/as99127f-i2c-0-2d/temp1 Sensor1_min 30 diff --git a/mail.c b/mail.c index 7621449..1815809 100644 --- a/mail.c +++ b/mail.c @@ -1,4 +1,4 @@ -/* $Id: mail.c,v 1.6 2001/03/14 13:19:29 ltoetsch Exp $ +/* $Id: mail.c,v 1.7 2001/03/15 14:25:05 ltoetsch Exp $ * * email specific functions * @@ -20,6 +20,9 @@ * * * $Log: mail.c,v $ + * 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 * @@ -121,9 +124,9 @@ int Mail (int index, int *num, int *unseen) rc=stat(fnp1, &fst); if ( rc != 0 ) { /* - is it pop3 or imap4? + is it pop3, imap4 or nntp? */ - rc = Mail_pop_imap(fnp1, num, unseen); + rc = Mail_pop_imap_news(fnp1, num, unseen); if (rc == 0) return 0; else diff --git a/mail.h b/mail.h index 8341220..456a5ac 100644 --- a/mail.h +++ b/mail.h @@ -1,4 +1,4 @@ -/* $Id: mail.h,v 1.3 2001/03/14 13:19:29 ltoetsch Exp $ +/* $Id: mail.h,v 1.4 2001/03/15 14:25:05 ltoetsch Exp $ * * email specific functions * @@ -20,6 +20,9 @@ * * * $Log: mail.h,v $ + * 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 * @@ -38,5 +41,5 @@ #define MAILBOXES 9 int Mail (int index, int *num, int *unseen); -int Mail_pop_imap(char *mbx, int *num, int *unseen); /* mail2.c */ +int Mail_pop_imap_news(char *mbx, int *num, int *unseen); /* mail2.c */ #endif diff --git a/mail2.c b/mail2.c index 4e974e5..af095fc 100644 --- a/mail2.c +++ b/mail2.c @@ -1,6 +1,6 @@ -/* $Id: mail2.c,v 1.2 2001/03/15 11:10:53 ltoetsch Exp $ +/* $Id: mail2.c,v 1.3 2001/03/15 14:25:05 ltoetsch Exp $ * - * mail: pop3, imap functions + * mail: pop3, imap, news functions * * Copyright 2001 by Leopold Tötsch (lt@toetsch.at) * @@ -20,6 +20,9 @@ * * * $Log: mail2.c,v $ + * 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 * @@ -29,7 +32,7 @@ * * Exported Functions: * - * int Mail_pop_imap(char *mbox, int *total_mails, int *unseen); + * int Mail_pop_imap_news(char *mbox, int *total_mails, int *unseen); * returns -1 on error, 0 on success * */ @@ -42,10 +45,12 @@ #include #include "debug.h" +#include "cfg.h" #include "socket.h" #define PROTO_UNKNOWN -1 #define PROTO_POP3 110 +#define PROTO_NNTP 119 #define PROTO_IMAP4 143 /* @@ -71,6 +76,7 @@ static int parse_proto(char *s, int *proto, char **user, char **pass, protos[] = { { "pop3:", PROTO_POP3 }, + { "nntp:", PROTO_NNTP }, { "imap4:", PROTO_IMAP4 }, }; int i; @@ -167,6 +173,115 @@ static int wr_rd(int fd, char *buf, char *match, 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; + + strcpy(buf, cfg_get("Newsrc") ?: ".newsrc"); + if (*buf == 0 || ((fp = fopen(buf, "r")) == NULL)) { + error("Couldn't open .newsrc-file '%s'", buf); + return -1; + } + + 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; + } + } + 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[BUFLEN]; + char *p; + int smin, smax, lmin, lmax; + + if (sscanf(line, "%s:", 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, &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) { @@ -259,7 +374,7 @@ static int check_pop3(char *user, char *pass, char *machine, return 0; } -int Mail_pop_imap(char *s, int *total, int *unseen) +int Mail_pop_imap_news(char *s, int *total, int *unseen) { int proto, port, ret; char *user, *pass, *machine, *dir, *ds; @@ -276,8 +391,10 @@ int Mail_pop_imap(char *s, int *total, int *unseen) error("Not a pop3/imap4 mailbox"); else ret = (proto == PROTO_POP3) ? - check_pop3(user, pass, machine, port, total, unseen) : - check_imap4(user, pass, machine, port, dir, total, unseen); + 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; } diff --git a/socket.c b/socket.c index fa57b53..cb00033 100644 --- a/socket.c +++ b/socket.c @@ -1,4 +1,4 @@ -/* $Id: socket.c,v 1.1 2001/03/14 13:19:29 ltoetsch Exp $ +/* $Id: socket.c,v 1.2 2001/03/15 14:25:05 ltoetsch Exp $ * * simple socket functions * @@ -20,6 +20,9 @@ * * * $Log: socket.c,v $ + * 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 * @@ -69,7 +72,7 @@ #include "debug.h" -#define TIMEOUT 2 /* 2 seconds timeout */ +#define TIMEOUT 5 /* 5 seconds timeout */ int open_socket(char *machine, int port) { -- cgit v1.2.3