--- wmjmail.c Tue Nov 30 07:36:05 1999 +++ wmjmail.new Wed Mar 28 07:40:06 2001 @@ -3,7 +3,22 @@ #include #include "jenglish.h" -int dontread = 0; +#include +#include +#include +#include +#include +#include +#include + +#define SPOOLDIR "/var/spool/mail/" +#define APPLICATION "xterm -sb -sl 2000 +si +sk -title XTerm -fg black -bg wheat -geometry 71x50-0-0 -e mutt &" + +int dontread = 0; +static char my_folder[256]; +static char my_app[256]; +static int my_new, my_tot, my_read; +static off_t size; void show_help() { printf("-s : Seconds between executions of mailchk\n"); @@ -15,47 +30,69 @@ void setup(int argc, char** argv) { char c; int i; - while( -1 != (c = getopt(argc, argv, "hrs:"))) { + + snprintf (my_app, 255, "%s", APPLICATION); + snprintf (my_folder, 255, "%s/%s", SPOOLDIR, getenv("USER")); + + while( -1 != (c = getopt(argc, argv, "hrs:x:f:"))) { switch(c) { case '?': exit(1); case 'h': show_help(); case 'r': dontread = 1; break; case 's': i=atoi(optarg); break; + case 'x': snprintf (my_app, 255, "%s", optarg); break; + case 'f': snprintf (my_folder, 255, "%s", optarg); break; } } + set_update_delay((i) ? i : 15); /* seconds */ set_loop_delay(1000); /* mu seconds */ } void do_update() { - int i, new, tot, read; - - FILE *f = popen("mailchk", "r"); - fscanf(f, "%i - %i - %i", &new, &tot, &read); - pclose(f); + int i; + int in; + struct stat buf; + + fprintf (stderr, "Stat '%s'\n", my_folder); + if ( stat (my_folder, &buf) != 0 ) + { + perror (""); + fprintf (stderr, "Could not stat '%s'\n", my_folder); + exit (-2); + } + + if ( size != buf.st_size ) + { + FILE *f = popen ("mailchk", "r"); + fscanf (f, "%i - %i - %i", &my_new, &my_tot, &my_read); + pclose (f); + size = buf.st_size; + } + clear_window(); jpprintf(0, 0, YELLOW, " J-mail"); - jpprintf(1, 2, BLUE, "New", new); - jprintf(GREEN, ":"); - if(new) { - jpprintf(7, 2, RED, "%i", new); + jpprintf(1, 2, BLUE, "New"); + jpprintf(6, 2, GREEN, ":"); + if (my_new) { + jpprintf(7, 2, RED, "%i", my_new); } else { - jpprintf(7, 2, CYAN, "%i", new); + jpprintf(7, 2, CYAN, "%i", my_new); } - if(!dontread) { - jpprintf(1, 3, BLUE, "Read", read); - jprintf(GREEN, ":"); - jpprintf(7, 3, CYAN, "%i", read); + if (!dontread) { + jpprintf(1, 3, BLUE, "Read"); + jpprintf(6, 3, GREEN, ":"); + jpprintf(7, 3, CYAN, "%i", my_read); } - jpprintf(1, 4, BLUE, "Total", tot); - jprintf(GREEN, ":"); - jpprintf(7, 4, CYAN, "%i", tot); + jpprintf(1, 4, BLUE, "Total"); + jpprintf(6, 4, GREEN, ":"); + jpprintf(7, 4, CYAN, "%i", my_tot); } void do_expose() { @@ -63,5 +100,6 @@ } void do_button_release() { - do_update(); + system (my_app); } +