summaryrefslogtreecommitdiff
path: root/package/sash/src/date.c
diff options
context:
space:
mode:
authorWaldemar Brodkorb <wbx@openadk.org>2014-08-20 21:11:13 +0200
committerWaldemar Brodkorb <wbx@openadk.org>2014-08-26 12:29:24 +0200
commit8e2707b81b0c90295c9fdf92a576925442d22147 (patch)
treee95ad185bfb7169ddaa1cfdceb6a9b134b3ec8b8 /package/sash/src/date.c
parent62f5a17a49e65c6639460abbf352b158b36301a7 (diff)
add sash, simpleinit and a uclibc config for nonmmu case
Diffstat (limited to 'package/sash/src/date.c')
-rw-r--r--package/sash/src/date.c54
1 files changed, 54 insertions, 0 deletions
diff --git a/package/sash/src/date.c b/package/sash/src/date.c
new file mode 100644
index 000000000..c7317998b
--- /dev/null
+++ b/package/sash/src/date.c
@@ -0,0 +1,54 @@
+/* date.c bradkemp@indusriver.com */
+
+#include <time.h>
+#include <stdio.h>
+
+static const char invalid_date[] = "Invalid date %s\n";
+int do_date(int argc, char * argv[])
+{
+
+ time_t tm;
+ struct tm tm_time;
+ time(&tm);
+ memcpy(&tm_time, localtime(&tm), sizeof(tm_time));
+
+ if (argc > 1) {
+ int nr;
+
+ nr = sscanf(argv[1], "%2d%2d%2d%2d%d",
+ &(tm_time.tm_mon),
+ &(tm_time.tm_mday),
+ &(tm_time.tm_hour),
+ &(tm_time.tm_min), &(tm_time.tm_year));
+
+ if (nr < 4 || nr > 5) {
+ fprintf(stderr, invalid_date, argv[1]);
+ return(0);
+ }
+
+ /* correct for century - minor Y2K problem here? */
+ if (tm_time.tm_year >= 1900)
+ tm_time.tm_year -= 1900;
+ /* adjust date */
+ tm_time.tm_mon -= 1;
+
+ if((tm = mktime(&tm_time)) < 0) {
+ fprintf(stderr, invalid_date, argv[1]);
+ return(0);
+ }
+
+ if(stime(&tm) < 0) {
+ fprintf(stderr, "Unable to set date\n");
+ return(0);
+ }
+
+ return (0);
+
+ }
+ printf("%s\n",asctime(&tm_time));
+
+ return(0);
+}
+
+
+