■ ソース
------------------------------------------------------------------------
#include <sys/types.h>
#include <sys/ioctl.h>
#include <fcntl.h>
#include <errno.h>
#include <stdlib.h>
#include <unistd.h>
#include <signal.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <stdio.h>
#include <X11/Intrinsic.h>
#include <X11/StringDefs.h>
#include <X11/Shell.h>
#define ARRIVE 1
#define NO 0
#define ON 1
#define OFF 0
unsigned char current_status = NO;
long mail_size = 0;
char spool_path[] = {"/var/mail/USER"};
char *DEV = "/dev/cuaa1";
int fd;
int ctrl;
int flags;
int set_bits = 255;
int
get_232status()
{
int r;
if ((fd = open(DEV, O_RDWR | O_NDELAY)) < 0) {
exit(1);
}
ioctl(fd, TIOCMSET, &set_bits);
sleep(5);
ioctl(fd, TIOCMGET, &flags);
close(fd);
if (flags & TIOCM_CD) {
r = 1;
} else {
r = 0;
}
return(r);
}
void
disp_LED(int mailflag)
{
int tmp;
int result = 1;
while(result) {
tmp = get_232status();
if(mailflag != tmp) {
continue;
}
result = 0;
}
}
main(){
int mailflag = 1;
struct stat file_stat;
if ((stat(spool_path, &file_stat) == 0) && (file_stat.st_size != 0)) {
/* There are Mail */
if (current_status == NO) {
/* NEW mail !! */
current_status = ARRIVE;
mail_size = file_stat.st_size;
disp_LED(ON);
}
} else {
disp_LED(OFF);
}
}
-- EOF ---------------------------------------------------------------------------