]> git.saurik.com Git - apple/shell_cmds.git/blobdiff - date/date.c
shell_cmds-81.tar.gz
[apple/shell_cmds.git] / date / date.c
index 7067535488ab13e8cfce2eabf69d15177a2b5ba9..fc456f8d1e1b1a5c399b47c809f16e25055b2421 100644 (file)
@@ -74,7 +74,7 @@ int retval = 0;
 int  unix2003_std = 0;         /* to determine legacy vs std mode */
 
 int main __P((int, char *[]));
-static void setthetime __P((const char *));
+static void setthetime __P((char *));
 static void badformat __P((void));
 static void badtime __P((void));
 static void usage __P((void));
@@ -91,6 +91,11 @@ main(argc, argv)
 
        (void)setlocale(LC_ALL, "");
 
+       if (compat_mode("bin/date", "unix2003"))        /* Determine the STD */
+               unix2003_std = 1;
+       else
+               unix2003_std = 0;
+
        rflag = 0;
        while ((ch = getopt(argc, argv, "nr:u")) != -1)
                switch((char)ch) {
@@ -146,7 +151,7 @@ main(argc, argv)
 
 void
 setthetime(p)
-       const char *p;
+       char *p;
 {
 
        struct tm *lt;
@@ -169,6 +174,8 @@ setthetime(p)
 
        lt = localtime(&tval);
 
+       lt->tm_isdst = -1;                      /* Divine correct DST */
+
        if (dot != NULL) {                      /* .ss */
                len = strlen(dot);
                if (len != 3)
@@ -182,11 +189,6 @@ setthetime(p)
 
        yearset = 0;
 
-       if (compat_mode("bin/date", "unix2003"))        /* Determine the STD */
-               unix2003_std = 1;
-       else
-               unix2003_std = 0;
-
        switch (strlen(p) - len) {
        case 12:                                /* cc */
                if(unix2003_std) {