diff options
Diffstat (limited to 'usr.bin')
-rw-r--r-- | usr.bin/Makefile | 2 | ||||
-rw-r--r-- | usr.bin/date/Makefile (renamed from usr.bin/time/Makefile) | 2 | ||||
-rw-r--r-- | usr.bin/date/date.c (renamed from usr.bin/time/time.c) | 39 | ||||
-rw-r--r-- | usr.bin/mrow/mrow.c | 3 | ||||
-rw-r--r-- | usr.bin/osh/osh.c | 2 |
5 files changed, 41 insertions, 7 deletions
diff --git a/usr.bin/Makefile b/usr.bin/Makefile index 8b22b73..9b241d8 100644 --- a/usr.bin/Makefile +++ b/usr.bin/Makefile @@ -9,7 +9,7 @@ all: make -C kmsg/ $(ARGS) make -C fetch/ $(ARGS) make -C kfgwm/ $(ARGS) - make -C time/ $(ARGS) + make -C date/ $(ARGS) make -C mex/ $(ARGS) make -C beep/ $(ARGS) make -C mrow/ $(ARGS) diff --git a/usr.bin/time/Makefile b/usr.bin/date/Makefile index 9ac98b4..09ff299 100644 --- a/usr.bin/time/Makefile +++ b/usr.bin/date/Makefile @@ -2,5 +2,5 @@ include user.mk CFILES = $(shell find . -name "*.c") -$(ROOT)/base/usr/bin/time: +$(ROOT)/base/usr/bin/date: gcc $(CFILES) -Iinclude/ -o $@ $(INTERNAL_CFLAGS) diff --git a/usr.bin/time/time.c b/usr.bin/date/date.c index 2f3b11f..a47e3eb 100644 --- a/usr.bin/time/time.c +++ b/usr.bin/date/date.c @@ -28,14 +28,34 @@ */ #include <sys/time.h> +#include <sys/cdefs.h> #include <stdio.h> #include <fcntl.h> #include <unistd.h> +#define MONTHS_PER_YEAR 12 +#define DAYS_PER_WEEK 7 + +/* Months of the year */ +static const char *montab[] = { + "Jan", "Feb", "Mar", + "Apr", "May", "Jun", + "Jul", "Aug", "Sep", + "Oct", "Nov", "Dec" +}; + +/* Days of the week */ +static const char *daytab[] = { + "Sat", "Sun", "Mon", + "Tue", "Wed", "Thu", + "Fri" +}; + int main(void) { - char date_str[16]; + const char *day, *month; + char date_str[32]; struct date d; int rtc_fd; @@ -46,8 +66,21 @@ main(void) read(rtc_fd, &d, sizeof(d)); close(rtc_fd); - snprintf(date_str, sizeof(date_str), "%02d:%02d:%02d\n", - d.hour, d.min, d.sec); + /* This should not happen */ + if (__unlikely(d.month > MONTHS_PER_YEAR)) { + printf("got bad month %d from RTC\n", d.month); + return -1; + } + if (__unlikely(d.month == 0 || d.day == 0)) { + printf("got zero month/day from RTC\n"); + return -1; + } + + day = daytab[d.day % DAYS_PER_WEEK]; + month = montab[d.month - 1]; + + snprintf(date_str, sizeof(date_str), "%s %s %d %02d:%02d:%02d\n", + day, month, d.day, d.hour, d.min, d.sec); fputs(date_str, stdout); return 0; } diff --git a/usr.bin/mrow/mrow.c b/usr.bin/mrow/mrow.c index ac4ee0d..ea9594a 100644 --- a/usr.bin/mrow/mrow.c +++ b/usr.bin/mrow/mrow.c @@ -36,6 +36,7 @@ #include <stdio.h> #include <time.h> #include <stdlib.h> +#include <stdbool.h> #define IS_ASCII(C) ((C) > 0 && (C) < 127) @@ -45,7 +46,7 @@ #define SPRITE_WIDTH 20 #define SPRITE_HEIGHT 20 -#define MAX_MOUSE_SPEED 3 +#define MAX_MOUSE_SPEED 2 #define MIN_MOUSE_SPEED 1 #define PLAYER_SPEED 30 diff --git a/usr.bin/osh/osh.c b/usr.bin/osh/osh.c index db8865d..efb159e 100644 --- a/usr.bin/osh/osh.c +++ b/usr.bin/osh/osh.c @@ -55,7 +55,7 @@ "fetch - System information\n" \ "kfg - Start up kfgwm\n" \ "bell - Toggle backspace bell\n" \ - "time - Get the current time\n" \ + "date - Get the current date\n" \ "clear - Clear the screen\n" \ "exit - Exit the shell" |