/* 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 #include "../lib/util.h" int newmsg(char path[1024]) { DIR *dir; int count; struct dirent *entry; if (!(dir = opendir(path))) die("failed to open dir"); count = 0; 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 *env; char buf[1024]; char path[1024]; struct dirent *entry; if (!(env = getenv("XDG_DATA_HOME"))) die("XDG_DATA_HOME is not set"); snprintf(buf, sizeof(buf), "%s/mail/", env); if (!(dir = opendir(buf))) die("failed to open dir"); 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(path, buf); strcat(path, entry->d_name); strcat(path, "/INBOX/new/"); count += newmsg(path); } } } closedir(dir); if (access("/tmp/mailupdate", F_OK) != -1) { printf(""); if (count != 0) printf(" "); } if (count == 0) return 0; printf(" %d", count); return 0; }