mail_counter.c - sites - public wiki contents of suckless.org | |
git clone git://git.suckless.org/sites | |
Log | |
Files | |
Refs | |
--- | |
mail_counter.c (1771B) | |
--- | |
1 // Fichier: dwmstatus.c | |
2 // Crée le 10 déc. 2012 22:28:11 | |
3 // Dernière modification: 21 déc. 2012 16:25:16 | |
4 | |
5 #define _BSD_SOURCE | |
6 #define _GNU_SOURCE | |
7 #include <unistd.h> | |
8 #include <stdio.h> | |
9 #include <stdlib.h> | |
10 #include <stdarg.h> | |
11 #include <string.h> | |
12 #include <strings.h> | |
13 #include <sys/time.h> | |
14 #include <time.h> | |
15 #include <sys/types.h> | |
16 #include <sys/wait.h> | |
17 #include <dirent.h> | |
18 | |
19 #include <X11/Xlib.h> | |
20 | |
21 static Display *dpy; | |
22 | |
23 char * | |
24 smprintf(char *fmt, ...) | |
25 { | |
26 va_list fmtargs; | |
27 char *buf = NULL; | |
28 | |
29 va_start(fmtargs, fmt); | |
30 if (vasprintf(&buf, fmt, fmtargs) == -1){ | |
31 fprintf(stderr, "malloc vasprintf\n"); | |
32 exit(1); | |
33 } | |
34 va_end(fmtargs); | |
35 | |
36 return buf; | |
37 } | |
38 | |
39 void | |
40 setstatus(char *str) | |
41 { | |
42 XStoreName(dpy, DefaultRootWindow(dpy), str); | |
43 XSync(dpy, False); | |
44 } | |
45 | |
46 char *get_nmail(char *directory, char *label) | |
47 { | |
48 /* directory : Maildir path | |
49 * return label : number_of_new_mails | |
50 */ | |
51 | |
52 int n = 0; | |
53 DIR* dir = NULL; | |
54 struct dirent* rf = NULL; | |
55 | |
56 dir = opendir(directory); /* try to open directory */ | |
57 if (dir == NULL) | |
58 perror(""); | |
59 | |
60 while ((rf = readdir(dir)) != NULL) /*count number of file*/ | |
61 { | |
62 if (strcmp(rf->d_name, ".") != 0 && | |
63 strcmp(rf->d_name, "..") != 0) | |
64 n++; | |
65 } | |
66 closedir(dir); | |
67 | |
68 if (n == 0) | |
69 return smprintf(""); | |
70 else | |
71 return smprintf("%s%d",label, n); | |
72 | |
73 } | |
74 | |
75 int | |
76 main(void) | |
77 { | |
78 char *status; | |
79 char *newmails; | |
80 | |
81 if (!(dpy = XOpenDisplay(NULL))) { | |
82 fprintf(stderr, "dwmstatus: cannot open display.\n"); | |
83 return 1; | |
84 } | |
85 | |
86 for (;;sleep(60)) { | |
87 newmails = get_nmail("/home/xavier/Maildir/laposte/new", "Mails:… | |
88 | |
89 | |
90 status = smprintf("%s",newmails); | |
91 setstatus(status); | |
92 free(newmails); | |
93 free(status); | |
94 } | |
95 | |
96 XCloseDisplay(dpy); | |
97 | |
98 return 0; | |
99 } | |
100 |