summary refs log tree commit diff stats
path: root/plugins/mailcheck/mailcheck.c
diff options
context:
space:
mode:
authorberkeviktor@aol.com <berkeviktor@aol.com>2011-02-24 04:14:30 +0100
committerberkeviktor@aol.com <berkeviktor@aol.com>2011-02-24 04:14:30 +0100
commit4a6ceffb98a0b785494f680d3776c4bfc4052f9e (patch)
tree850703c1c841ccd99f58d0b06084615aaebe782c /plugins/mailcheck/mailcheck.c
parentf16af8be941b596dedac3bf4e371ee2d21f4b598 (diff)
add xchat r1489
Diffstat (limited to 'plugins/mailcheck/mailcheck.c')
-rw-r--r--plugins/mailcheck/mailcheck.c94
1 files changed, 94 insertions, 0 deletions
diff --git a/plugins/mailcheck/mailcheck.c b/plugins/mailcheck/mailcheck.c
new file mode 100644
index 00000000..19011ab3
--- /dev/null
+++ b/plugins/mailcheck/mailcheck.c
@@ -0,0 +1,94 @@
+/* XCHAT 2.0 PLUGIN: Mail checker */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <unistd.h>
+
+#include "xchat-plugin.h"
+
+
+static xchat_plugin *ph;	/* plugin handle */
+
+static int
+mail_items(char *file)
+{
+	FILE *fp;
+	int items;
+	char buf[512];
+
+	fp = fopen(file, "r");
+	if(!fp)
+		return 1;
+
+	items = 0;
+	while(fgets(buf, sizeof buf, fp))
+	{
+		if(!strncmp(buf, "From ", 5))
+			items++;
+	}
+	fclose(fp);
+
+	return items;
+}
+
+static void
+xchat_mail_check (void)
+{
+	static int last_size = -1;
+	int size;
+	struct stat st;
+	char buf[512];
+	char *maildir;
+
+	maildir = getenv("MAIL");
+	if(!maildir)
+	{
+		snprintf (buf, sizeof(buf), "/var/spool/mail/%s", getenv("USER"));
+		maildir = buf;
+	}
+
+	if(stat(maildir, &st) < 0)
+		return;
+
+	size = st.st_size;
+
+	if(last_size == -1)
+	{
+		last_size = size;
+		return;
+	}
+
+	if(size > last_size)
+	{
+		xchat_printf(ph,
+	"-\0033-\0039-\017\tYou have new mail (%d messages, %d bytes total).",
+				mail_items(maildir), size);
+	}
+
+	last_size = size;
+}
+
+static int timeout_cb(void *userdata)
+{
+	xchat_mail_check();
+
+	return 1;
+}
+
+int xchat_plugin_init(xchat_plugin *plugin_handle,
+				char **plugin_name, char **plugin_desc, char **plugin_version,
+				char *arg)
+{
+	ph = plugin_handle;
+
+	*plugin_name = "MailCheck";
+	*plugin_desc = "Checks your mailbox every 30 seconds";
+	*plugin_version = "0.1";
+
+	xchat_hook_timer(ph, 30000, timeout_cb, 0);
+
+	return 1;
+}