Module Name:    src
Committed By:   christos
Date:           Sun Jan 21 16:55:56 UTC 2024

Modified Files:
        src/bin/date: date.c

Log Message:
Handle -d %Y%m%d in the tools version. This is used in the release notes
Makefile.inc when BUILDID is specified. Consider providing parsedate(3)
in libcompat, but then we'd need yacc...


To generate a diff of this commit:
cvs rdiff -u -r1.65 -r1.66 src/bin/date/date.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/bin/date/date.c
diff -u src/bin/date/date.c:1.65 src/bin/date/date.c:1.66
--- src/bin/date/date.c:1.65	Wed May 31 13:56:54 2023
+++ src/bin/date/date.c	Sun Jan 21 11:55:56 2024
@@ -1,4 +1,4 @@
-/* $NetBSD: date.c,v 1.65 2023/05/31 17:56:54 kim Exp $ */
+/* $NetBSD: date.c,v 1.66 2024/01/21 16:55:56 christos Exp $ */
 
 /*
  * Copyright (c) 1985, 1987, 1988, 1993
@@ -44,7 +44,7 @@ __COPYRIGHT(
 #if 0
 static char sccsid[] = "@(#)date.c	8.2 (Berkeley) 4/28/95";
 #else
-__RCSID("$NetBSD: date.c,v 1.65 2023/05/31 17:56:54 kim Exp $");
+__RCSID("$NetBSD: date.c,v 1.66 2024/01/21 16:55:56 christos Exp $");
 #endif
 #endif /* not lint */
 
@@ -98,8 +98,8 @@ main(int argc, char *argv[])
 			nflag = 1;
 			break;
 		case 'd':
-#ifndef HAVE_NBTOOL_CONFIG_H
 			rflag = 1;
+#ifndef HAVE_NBTOOL_CONFIG_H
 			tval = parsedate(optarg, NULL, NULL);
 			if (tval == -1) {
 				errx(EXIT_FAILURE,
@@ -107,6 +107,19 @@ main(int argc, char *argv[])
 			}
 			break;
 #else
+			/* handle YYYYMMDD, or fail */
+			{
+				struct tm tm;
+				char *p;
+				memset(&tm, 0, sizeof(tm));
+				p = strptime(optarg, "%Y%m%d", &tm);
+				if (*p == '\0'
+				    && tm.tm_year >= 0 && tm.tm_year < 1000
+				    && tm.tm_mon >= 0 && tm.tm_mon <= 11
+				    && tm.tm_mday >= 1 && tm.tm_mday <= 31
+				    && (tval = mktime(&tm)) != -1)
+					break;
+			}
 			errx(EXIT_FAILURE,
 			    "-d not supported in the tool version");
 #endif

Reply via email to