| /* |
| * vcstime.c |
| * |
| * Show time in upper right hand corner of the console screen |
| * aeb, 951202, following a suggestion by Miguel de Icaza. |
| */ |
| #include <stdio.h> |
| #include <stdlib.h> |
| #include <unistd.h> |
| #include <fcntl.h> |
| #include <time.h> |
| |
| void fatal(char *s) |
| { |
| perror(s); |
| exit(1); |
| } |
| |
| int number_of_columns() |
| { |
| int fda; |
| unsigned char rc[2]; /* unsigned: Ranty@soon.com */ |
| |
| if ((fda = open("/dev/vcsa", O_RDONLY)) < 0 && (fda = open("/dev/vcsa0", O_RDONLY)) < 0) |
| fatal("/dev/vcsa"); |
| if (read(fda, rc, 2) != 2) |
| fatal("/dev/vcsa"); |
| close(fda); |
| return rc[1]; |
| } |
| |
| int main() |
| { |
| int fd; |
| int cols = number_of_columns(); |
| time_t tid; |
| struct tm *t; |
| char tijd[10]; |
| |
| if ((fd = open("/dev/vcs", O_WRONLY)) < 0 && (fd = open("/dev/vcs0", O_WRONLY)) < 0) |
| fatal("/dev/vcs"); |
| |
| while (1) { |
| lseek(fd, cols - 10, 0); |
| tid = time(0); |
| t = localtime(&tid); |
| sprintf(tijd, " %02d:%02d:%02d", t->tm_hour, t->tm_min, t->tm_sec); |
| write(fd, tijd, 9); |
| usleep(500000L); /* or sleep(1); */ |
| } |
| } |