Implement flags as bitlist
authorJoey Schulze <joey@infodrom.org>
Mon, 22 Nov 2004 15:23:54 +0000 (15:23 +0000)
committerJoey Schulze <joey@infodrom.org>
Mon, 22 Nov 2004 15:23:54 +0000 (15:23 +0000)
folder.c
folder.h
mbox.c
mbox.h
newmail.c
optdefs.h [new file with mode: 0644]

index 26232f0..2e0f4c8 100644 (file)
--- a/folder.c
+++ b/folder.c
@@ -27,6 +27,7 @@
 #include <errno.h>
 #include <paths.h>
 #include "mbox.h"
+#include "optdefs.h"
 
 #define FOLDERS_DELTA  5
 
@@ -154,15 +155,15 @@ void fix_prefix()
   }
 }
 
-void watch_folders(int opt_bell)
+void watch_folders(int opt_flags)
 {
   unsigned int i;
   int newmail = 0;
 
   for (i=0; i < numfolders; i++)
-    newmail |= watch_mbox(folders[i]->path, folders[i]->prefix, &folders[i]->size);
+    newmail |= watch_mbox(folders[i]->path, folders[i]->prefix, &folders[i]->size, opt_flags);
 
-  if (newmail && opt_bell) {
+  if (newmail && (opt_flags & OPT_BELL)) {
     putchar('\007');
     fflush(stdout);
   }
index 25076ad..09f694c 100644 (file)
--- a/folder.h
+++ b/folder.h
@@ -22,4 +22,4 @@ void add_default_folder();
 
 void fix_prefix();
 
-void watch_folders(int opt_bell);
+void watch_folders(int opt_flags);
diff --git a/mbox.c b/mbox.c
index fb63e49..bb9848b 100644 (file)
--- a/mbox.c
+++ b/mbox.c
@@ -44,7 +44,7 @@ char *stringcopy(char *dest, const char *src, size_t n)
   return dest;
 }
 
-int inspect_mbox(char *path, char *prefix, off_t size)
+int inspect_mbox(char *path, char *prefix, off_t size, int opt_flags)
 {
   FILE *f;
   char buf[HDR_LEN];
@@ -116,7 +116,7 @@ int inspect_mbox(char *path, char *prefix, off_t size)
   return newmail;
 }
 
-int watch_mbox(char *path, char *prefix, off_t *size)
+int watch_mbox(char *path, char *prefix, off_t *size, int opt_flags)
 {
   struct stat st;
   int newmail = 0;
@@ -124,7 +124,7 @@ int watch_mbox(char *path, char *prefix, off_t *size)
   if (stat(path, &st) == 0) {
     if (st.st_size > *size)
       if (access(path, R_OK) == 0) {
-       newmail = inspect_mbox(path, prefix, *size);
+       newmail = inspect_mbox(path, prefix, *size, opt_flags);
       }
     *size = st.st_size;
     return newmail;
diff --git a/mbox.h b/mbox.h
index 836ec7a..e406f58 100644 (file)
--- a/mbox.h
+++ b/mbox.h
@@ -16,4 +16,4 @@
     Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  */
 
-off_t watch_mbox(char *path, char *prefix, off_t *size);
+off_t watch_mbox(char *path, char *prefix, off_t *size, int opt_flags);
index 0ba53bb..4ee7876 100644 (file)
--- a/newmail.c
+++ b/newmail.c
@@ -21,6 +21,7 @@
 #include <unistd.h>
 #include <signal.h>
 #include "folder.h"
+#include "optdefs.h"
 #include "version.h"
 
 void usage()
@@ -36,17 +37,15 @@ void usage()
 
 int main(int argc, char *argv[])
 {
-  int opt_bell = 0;
+  int opt_flags = 0;
   unsigned int opt_interval = 60;
-  int opt_window = 0;
-  int opt_raw = 0;
   int c;
   int tmp_i;
 
   while ((c = getopt(argc, argv, "bhi:rw")) != -1) {
     switch (c) {
     case 'b':
-      opt_bell = 1;
+      opt_flags |= OPT_BELL;
       break;
     case 'h':
       usage();
@@ -59,10 +58,10 @@ int main(int argc, char *argv[])
        fprintf(stderr, "Interval not greater as zero, ignoring\n");
       break;
     case 'r':
-      opt_raw = 1;
+      opt_flags |= OPT_RAW;
       break;
     case 'w':
-      opt_window = 1;
+      opt_flags |= OPT_WINDOW;
       break;
     }
   }
@@ -74,7 +73,7 @@ int main(int argc, char *argv[])
       add_folder(argv[optind++]);
   fix_prefix();
 
-  if (!opt_window) {
+  if (!(opt_flags & OPT_WINDOW)) {
     if (fork())
       return 0;
 
@@ -84,7 +83,7 @@ int main(int argc, char *argv[])
 
   while (1) {
     /* Loop over all files */
-    watch_folders(opt_bell);
+    watch_folders(opt_flags);
 
     /* wait for the next incarnation */
     sleep(opt_interval);
diff --git a/optdefs.h b/optdefs.h
new file mode 100644 (file)
index 0000000..544a024
--- /dev/null
+++ b/optdefs.h
@@ -0,0 +1,21 @@
+/*
+    Copyright (c) 2004  Joey Schulze <joey@infodrom.org>
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#define        OPT_BELL        0x01
+#define        OPT_WINDOW      0x02
+#define        OPT_RAW         0x04