wip
This commit is contained in:
parent
e453c5b8f4
commit
f91f5042cb
5 changed files with 239 additions and 1 deletions
32
mbiff/mail.c
Normal file
32
mbiff/mail.c
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
#include "mbiff.h"
|
||||
|
||||
static time_t last = 0;
|
||||
static char* mailpath;
|
||||
|
||||
void init_mail(void){
|
||||
struct stat s;
|
||||
struct passwd* pwd = getpwuid(getuid());
|
||||
|
||||
if(getenv("MAIL") != NULL){
|
||||
mailpath = malloc(strlen(getenv("MAIL")) + strlen(pwd->pw_name) + 1);
|
||||
sprintf(mailpath, getenv("MAIL"), pwd->pw_name);
|
||||
}else{
|
||||
mailpath = malloc(strlen(_PATH_MAILDIR) + 1 + strlen(pwd->pw_name) + 1);
|
||||
sprintf(mailpath, _PATH_MAILDIR "/%s", pwd->pw_name);
|
||||
}
|
||||
|
||||
if(stat(mailpath, &s) == 0){
|
||||
last = s.st_mtime;
|
||||
}
|
||||
}
|
||||
|
||||
void check_mail(void){
|
||||
struct stat s;
|
||||
if(stat(mailpath, &s) == 0){
|
||||
if(s.st_mtime > last){
|
||||
printf("!\n");
|
||||
}
|
||||
|
||||
last = s.st_mtime;
|
||||
}
|
||||
}
|
||||
57
mbiff/mailempty.xpm
Normal file
57
mbiff/mailempty.xpm
Normal file
|
|
@ -0,0 +1,57 @@
|
|||
/* XPM */
|
||||
static char *mailempty[] = {
|
||||
/* columns rows colors chars-per-pixel */
|
||||
"48 48 3 1 ",
|
||||
" c None",
|
||||
". c black",
|
||||
"X c white",
|
||||
/* pixels */
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
|
||||
" X.......................................X",
|
||||
" X........................................X",
|
||||
" X......X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X....X",
|
||||
" X......X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.....X",
|
||||
" X........X.X.X.X.X.X.X.X.X.X.X.X.X.X.X......X",
|
||||
" X........X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.......X",
|
||||
" X..........X.X.X.X.X.X.X.X.X.X.X.X.X.X........X",
|
||||
"X..............................................X",
|
||||
"X..............................................X",
|
||||
"X.........X.X.X.X.X.X.X.X.X.X.X.X.X.X..........X",
|
||||
"X........X.X.X.X.X.X.X.X.X.X.X.X.X.X........X..X",
|
||||
"X.......X.X.X.X.X.X.X.X.X.X.X.X.X.X.X......XX..X",
|
||||
"X......X.X.X.X.X.X.X.X.X.X.X.X.X.X.X......X X..X",
|
||||
"X.....X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X....X X..X",
|
||||
"X.......................................X X..X",
|
||||
"X......................................X X..X",
|
||||
"X..XXXXXX..XXXXXXXXXXXXXXXXXXXXXXXXXX..X X..X",
|
||||
"X..X X..X X..X X..X",
|
||||
"X..X X..X X..X X..X",
|
||||
"X..X X..X X..X X..X",
|
||||
"X..X X..XXXXXXXXXXXXXXXXXXXXXXXXXX..XXXXXX..X",
|
||||
"X..X X......................................X",
|
||||
"X..X X.......................................X",
|
||||
"X..X X.....X.X.X.X.X.X.X.X.X.X.X.X.X...X.X....X",
|
||||
"X..X X.....X.X.X.X.X.X.X.X.X.X.X.X.X...X.X.....X",
|
||||
"X..XX.......X.X.X.X.X.X.X.X.X.X.X.X.X...X......X",
|
||||
"X..X.......X.X.X.X.X.X.X.X.X.X.X.X.X...X.......X",
|
||||
"X...........X.X.X.X.X.X.X.X.X.X.X.X.X..........X",
|
||||
"X..............................................X",
|
||||
"X..............................................X",
|
||||
"X.........X.X.X.X.X.X.X.X.X.X.X.X.X.X..........X",
|
||||
"X........X.X.X.X.X.X.X.X.X.X.X.X.X.X........X..X",
|
||||
"X.......X.X.X.X.X.X.X.X.X.X.X.X.X.X.X......XX..X",
|
||||
"X......X.X.X.X.X.X.X.X.X.X.X.X.X.X.X......X X..X",
|
||||
"X.....X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X....X X..X",
|
||||
"X.......................................X X..X",
|
||||
"X......................................X X..X",
|
||||
"X..XXXXXX..XXXXXXXXXXXXXXXXXXXXXXXXXX..X XXXX",
|
||||
"X..X XXXX X..X ",
|
||||
"X..X X..X ",
|
||||
"X..X X..X ",
|
||||
"X..X X..X ",
|
||||
"X..X X..X ",
|
||||
"XXXX XXXX "
|
||||
};
|
||||
57
mbiff/mailfull.xpm
Normal file
57
mbiff/mailfull.xpm
Normal file
|
|
@ -0,0 +1,57 @@
|
|||
/* XPM */
|
||||
static char *mailfull[] = {
|
||||
/* columns rows colors chars-per-pixel */
|
||||
"48 48 3 1 ",
|
||||
" c None",
|
||||
". c black",
|
||||
"X c white",
|
||||
/* pixels */
|
||||
" XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ",
|
||||
" XXXXXXXXX.............................X ",
|
||||
" X...............................XXXXX.X ",
|
||||
" X.XXXXXXXXXXXXXXXXXXXXXXXXXXXXX.X...X.XXXXX",
|
||||
" X.XXXXXXXXXXXXXXXXXXXXXXXXX...X.X.X.X.....X",
|
||||
" X.XX....XXXXXXXXXXXXXXXXXXX.X.X.X.X.X.....X",
|
||||
" X.XXXXXXXXXXXXXXXXXXXXXXXXX.X.X.X...X.....X",
|
||||
" X..XX.XXXXXXXXXXXXXXXXXXXXXX...X.XXXXX.....X",
|
||||
" X...XXXXXXXXXX......XXXXXXXXXXXXX.XXXXX.....X",
|
||||
" X....XXXXXXXXXXXXXXXXXXXXXXXXXXXXX.XXXX......X",
|
||||
" X.....XXXXXXXXXX....XXXXXXXXXXXXXXX.XXX.......X",
|
||||
"X......XXXXXXXXXXXXXXXXXXXXXXXXXXXXX.XX........X",
|
||||
"X......XXXXXXXXXX.....XX...XXXXXXXXX.X.........X",
|
||||
"X......XXXXXXXXXXXXXXXXXXXXXXXXXXXXX...........X",
|
||||
"X......XXXXXXXXXXXXXXXXXXXXXXXXXXXXX........X..X",
|
||||
"X......XXXXXXXXXXXXXXXXXXXXXXXXXXXXX.......XX..X",
|
||||
"X.........................................X X..X",
|
||||
"X.....X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X....X X..X",
|
||||
"X.......................................X X..X",
|
||||
"X......................................X X..X",
|
||||
"X..XXXXXX..XXXXXXXXXXXXXXXXXXXXXXXXXX..X X..X",
|
||||
"X..X X..X X..X X..X",
|
||||
"X..X X..X X..X X..X",
|
||||
"X..X X..X X..X X..X",
|
||||
"X..X X..XXXXXXXXXXXXXXXXXXXXXXXXXX..XXXXXX..X",
|
||||
"X..X X.......................................X",
|
||||
"X..X X........................................X",
|
||||
"X..X X......X.X.X.X.X.X.X.X.X.X.X.X.X...X.X....X",
|
||||
"X..XX......X.X.X.X.X.X.X.X.X.X.X.X.X...X.X.....X",
|
||||
"X..X........X.X.X.X.X.X.X.X.X.X.X.X.X...X......X",
|
||||
"X..........X.X.X.X.X.X.X.X.X.X.X.X.X...X.......X",
|
||||
"X...........X.X.X.X.X.X.X.X.X.X.X.X.X..........X",
|
||||
"X..............................................X",
|
||||
"X..............................................X",
|
||||
"X.........X.X.X.X.X.X.X.X.X.X.X.X.X.X..........X",
|
||||
"X........X.X.X.X.X.X.X.X.X.X.X.X.X.X........X..X",
|
||||
"X.......X.X.X.X.X.X.X.X.X.X.X.X.X.X.X......XX..X",
|
||||
"X......X.X.X.X.X.X.X.X.X.X.X.X.X.X.X......X X..X",
|
||||
"X.....X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X....X X..X",
|
||||
"X.......................................X X..X",
|
||||
"X......................................X X..X",
|
||||
"X..XXXXXX..XXXXXXXXXXXXXXXXXXXXXXXXXX..X X..X",
|
||||
"X..X XXXXXXXXXXXXXXXXXXXXXXXXX X..X XXXX",
|
||||
"X..X X...X...XX...XX....X..XXX X..X ",
|
||||
"X..X X.......X..X..XX..XX..XXX X..X ",
|
||||
"X..X X..X.X..X.....XX..XX..XXX X..X ",
|
||||
"X..X X..XXX..X..X..X....X....X X..X ",
|
||||
"XXXX XXXXXXXXXXXXXXXXXXXXXXXXX XXXX "
|
||||
};
|
||||
59
mbiff/main.c
59
mbiff/main.c
|
|
@ -1 +1,58 @@
|
|||
int main() {}
|
||||
#include "mbiff.h"
|
||||
|
||||
#include "mailempty.xpm"
|
||||
#include "mailfull.xpm"
|
||||
|
||||
MwWidget window, image;
|
||||
MwLLPixmap empty, full;
|
||||
static int waiting = 0;
|
||||
|
||||
static void resize(MwWidget handle, void* user, void* client){
|
||||
int w = MwGetInteger(handle, MwNwidth);
|
||||
int h = MwGetInteger(handle, MwNheight);
|
||||
int iw = w < h ? w : h;
|
||||
|
||||
(void)user;
|
||||
(void)client;
|
||||
|
||||
MwVaApply(image,
|
||||
MwNx, (w - iw) / 2,
|
||||
MwNy, (h - iw) / 2,
|
||||
MwNwidth, iw,
|
||||
MwNheight, iw,
|
||||
NULL);
|
||||
}
|
||||
|
||||
static void tick(MwWidget handle, void* user, void* client){
|
||||
(void)user;
|
||||
(void)client;
|
||||
|
||||
waiting += MwWaitMS;
|
||||
if(waiting >= 1000){
|
||||
check_mail();
|
||||
|
||||
waiting = 0;
|
||||
}
|
||||
}
|
||||
|
||||
int main() {
|
||||
init_mail();
|
||||
|
||||
MwLibraryInit();
|
||||
|
||||
window = MwVaCreateWidget(MwWindowClass, "main", NULL, MwDEFAULT, MwDEFAULT, 48, 48,
|
||||
MwNtitle, "mbiff",
|
||||
NULL);
|
||||
|
||||
empty = MwLoadXPM(window, mailempty);
|
||||
full = MwLoadXPM(window, mailfull);
|
||||
|
||||
image = MwVaCreateWidget(MwImageClass, "image", window, 0, 0, 48, 48,
|
||||
MwNpixmap, empty,
|
||||
NULL);
|
||||
|
||||
MwAddUserHandler(window, MwNtickHandler, tick, NULL);
|
||||
MwAddUserHandler(window, MwNresizeHandler, resize, NULL);
|
||||
|
||||
MwLoop(window);
|
||||
}
|
||||
|
|
|
|||
35
mbiff/mbiff.h
Normal file
35
mbiff/mbiff.h
Normal file
|
|
@ -0,0 +1,35 @@
|
|||
#ifndef __MBIFF_H__
|
||||
#define __MBIFF_H__
|
||||
|
||||
#include "config.h"
|
||||
|
||||
/* Milsko */
|
||||
#include <MDE/Foundation.h>
|
||||
#include <Mw/Milsko.h>
|
||||
|
||||
/* External */
|
||||
|
||||
/* Standard */
|
||||
#include <sys/stat.h>
|
||||
#include <unistd.h>
|
||||
#include <pwd.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
#ifdef HAS_PATHS_H
|
||||
#include <paths.h>
|
||||
#endif
|
||||
|
||||
#ifndef _PATH_MAILDIR
|
||||
#define _PATH_MAILDIR "/var/mail"
|
||||
#endif
|
||||
|
||||
/* main.c */
|
||||
extern MwWidget window, image;
|
||||
extern MwLLPixmap empty, full;
|
||||
|
||||
/* mail.c */
|
||||
void init_mail(void);
|
||||
void check_mail(void);
|
||||
|
||||
#endif
|
||||
Loading…
Add table
Add a link
Reference in a new issue