summaryrefslogtreecommitdiff
path: root/src/stmail.c
diff options
context:
space:
mode:
authorawy <awy@awy.one>2025-08-24 02:26:07 +0300
committerawy <awy@awy.one>2025-08-24 02:26:07 +0300
commit09a26825adf370314219424b4bff2c3f9a931ebb (patch)
treedfbc6f1919182ae1e9ca96f40bfef935aec88848 /src/stmail.c
parentf88c78591b4211f80dc1ec5c5a5f620f383e21b8 (diff)
stmail
Diffstat (limited to 'src/stmail.c')
-rw-r--r--src/stmail.c88
1 files changed, 88 insertions, 0 deletions
diff --git a/src/stmail.c b/src/stmail.c
new file mode 100644
index 0000000..d4c23eb
--- /dev/null
+++ b/src/stmail.c
@@ -0,0 +1,88 @@
+/* Copyright (C) 2025 awy <awy@awy.one>
+
+ stmail 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 3 of the License, or (at your option) any later version.
+
+ stmail 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 stmail. If not, see
+ <https://www.gnu.org/licenses/>. */
+
+#define _DEFAULT_SOURCE
+#include <stdlib.h>
+#include <dirent.h>
+#include <string.h>
+#include <stdio.h>
+#include <unistd.h>
+
+int
+newmsg(char path[1024])
+{
+ DIR *dir;
+ int count;
+ struct dirent *entry;
+
+ count = 0;
+
+ dir = opendir(path);
+ if (!dir) { return 1; }
+
+ while ((entry = readdir(dir)) != NULL) {
+ if (entry->d_type == DT_REG) {
+ if (strcmp(entry->d_name, ".") && strcmp(entry->d_name, "..")) {
+ count++;
+ }
+ }
+ }
+
+ return count;
+}
+
+int
+main(void)
+{
+ DIR *dir;
+ int count;
+ char *path;
+ char fullpath[1024];
+ struct dirent *entry;
+
+ path = getenv("XDG_DATA_HOME");
+ if (!path) { puts("XDG_DATA_HOME is not set"); return 1; }
+
+ strcat(path, "/mail");
+
+ dir = opendir(path);
+ if (!dir) { return 1; }
+
+ count = 0;
+
+ while ((entry = readdir(dir)) != NULL) {
+ if (entry->d_type == DT_DIR) {
+ if (strcmp(entry->d_name, ".") && strcmp(entry->d_name, "..") && strcmp(entry->d_name, ".notmuch")) {
+ strcpy(fullpath, path);
+ strcat(fullpath, "/");
+ strcat(fullpath, entry->d_name);
+ strcat(fullpath, "/INBOX/new/");
+ count += newmsg(fullpath);
+ }
+ }
+ }
+
+ if (access("/tmp/mailupdate", F_OK) != -1) {
+ printf("");
+ if (count != 0) { printf(" "); }
+ }
+
+ if (count == 0) { return 0; }
+ printf(" %d", count);
+
+ closedir(dir);
+ return 0;
+}