date(1): Fix the default format.
authorSascha Wildner <saw@online.de>
Fri, 4 Oct 2013 06:44:06 +0000 (08:44 +0200)
committerSascha Wildner <saw@online.de>
Fri, 4 Oct 2013 07:20:28 +0000 (09:20 +0200)
The correct format string for national representation of date(1)'s default
output is "date_fmt" (see /usr/src/share/timedef/*), which is not returned
by any standard nl_langinfo() constant. Previously, we defined our own
_DATE_FMT constant and handled it as an extension of nl_langinfo().

The locale upgrade removed nl_langinfo()'s _DATE_FMT handling and at the
same time brought in a change that causes "date_fmt" to be returned when
using "%+" as strftime()'s format.

That means, a nl_langinfo() call in date(1) is no longer needed, even
wrong (there is no constant returning the representation date(1) needs),
since strftime() can handle it all by itself directly and we can just use
"%+", like FreeBSD does, too.

bin/date/date.c

index cab44f5..a0bb26a 100644 (file)
@@ -29,7 +29,6 @@
  * @(#) Copyright (c) 1985, 1987, 1988, 1993 The Regents of the University of California.  All rights reserved.
  * @(#)date.c  8.2 (Berkeley) 4/28/95
  * $FreeBSD: src/bin/date/date.c,v 1.47 2005/01/10 08:39:21 imp Exp $
- * $DragonFly: src/bin/date/date.c,v 1.14 2006/01/12 13:43:10 corecode Exp $
  */
 
 #include <sys/param.h>
@@ -37,7 +36,6 @@
 
 #include <ctype.h>
 #include <err.h>
-#include <langinfo.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
@@ -135,7 +133,7 @@ main(int argc, char **argv)
        if (!rflag && time(&tval) == -1)
                err(1, "time");
 
-       format = nl_langinfo(D_T_FMT);
+       format = "%+";
 
        /* allow the operands in any order */
        if (*argv && **argv == '+') {