diff options
author | awy <awy@awy.one> | 2025-08-24 02:26:07 +0300 |
---|---|---|
committer | awy <awy@awy.one> | 2025-08-24 02:26:07 +0300 |
commit | 09a26825adf370314219424b4bff2c3f9a931ebb (patch) | |
tree | dfbc6f1919182ae1e9ca96f40bfef935aec88848 /src | |
parent | f88c78591b4211f80dc1ec5c5a5f620f383e21b8 (diff) |
stmail
Diffstat (limited to 'src')
-rw-r--r-- | src/stmail.c | 88 |
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; +} |