From 09a26825adf370314219424b4bff2c3f9a931ebb Mon Sep 17 00:00:00 2001 From: awy Date: Sun, 24 Aug 2025 02:26:07 +0300 Subject: stmail --- src/stmail.c | 88 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 88 insertions(+) create mode 100644 src/stmail.c (limited to 'src') 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 + + 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 + . */ + +#define _DEFAULT_SOURCE +#include +#include +#include +#include +#include + +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; +} -- cgit v1.2.3