Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 19 Apr 1998 03:38:28 +0400 (MSD)
From:      Dmitry Khrustalev <dima@xyzzy.machaon.ru>
To:        FreeBSD-gnats-submit@FreeBSD.ORG
Subject:   bin/6345: ctime_r is not implemented
Message-ID:  <199804182338.DAA07927@xyzzy.machaon.ru>

next in thread | raw e-mail | index | archive | help

>Number:         6345
>Category:       bin
>Synopsis:       ctime_r is not implemented
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    freebsd-bugs
>State:          open
>Quarter:
>Keywords:
>Date-Required:
>Class:          change-request
>Submitter-Id:   current-users
>Arrival-Date:   Sat Apr 18 16:40:01 PDT 1998
>Last-Modified:
>Originator:     Dmitry Khrustalev
>Organization:
>Release:        FreeBSD 3.0-CURRENT i386
>Environment:

	FreeBSD 3.0-CURRENT i386

>Description:

        ctime_r and asctime_r are not implemented.
        prototypes in time.h do not match POSIX.

>How-To-Repeat:

	

>Fix:
	
    Apply the following patch:


diff -r -u lib/libc/stdtime.ORIG/asctime.c lib/libc/stdtime/asctime.c
--- lib/libc/stdtime.ORIG/asctime.c	Sun Apr 19 02:22:15 1998
+++ lib/libc/stdtime/asctime.c	Sun Apr 19 03:04:11 1998
@@ -18,9 +18,20 @@
 ** A la X3J11, with core dump avoidance.
 */
 
+
 char *
 asctime(timeptr)
-register const struct tm *	timeptr;
+const struct tm *	timeptr;
+{
+	static char		result[3 * 2 + 5 * INT_STRLEN_MAXIMUM(int) +
+					3 + 2 + 1 + 1];
+	return(asctime_r(timeptr, result));
+}
+
+char *
+asctime_r(timeptr, result)
+const struct tm *	timeptr;
+char *result;
 {
 	static const char	wday_name[][3] = {
 		"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"
@@ -36,8 +47,6 @@
 	** three explicit spaces, two explicit colons, a newline,
 	** and a trailing ASCII nul).
 	*/
-	static char		result[3 * 2 + 5 * INT_STRLEN_MAXIMUM(int) +
-					3 + 2 + 1 + 1];
 	register const char *	wn;
 	register const char *	mn;
 
Only in lib/libc/stdtime: asctime.c.orig
diff -r -u lib/libc/stdtime.ORIG/localtime.c lib/libc/stdtime/localtime.c
--- lib/libc/stdtime.ORIG/localtime.c	Sun Apr 19 02:22:14 1998
+++ lib/libc/stdtime/localtime.c	Sun Apr 19 03:28:56 1998
@@ -1345,6 +1345,15 @@
 	return asctime(localtime(timep));
 }
 
+char *
+ctime_r(timep, buf)
+const time_t * const	timep;
+char *buf;
+{
+        struct tm tm;
+	return asctime_r(localtime_r(timep, &tm), buf);
+}
+
 /*
 ** Adapted from code provided by Robert Elz, who writes:
 **	The "best" way to do mktime I think is based on an idea of Bob
Only in lib/libc/stdtime: localtime.c.orig
--- include/time.h.ORIG	Sat Apr  4 20:16:36 1998
+++ include/time.h	Sun Apr 19 03:04:11 1998
@@ -128,8 +128,8 @@
 time_t time __P((time_t *));
 
 #ifdef	_THREAD_SAFE
-int asctime_r __P((const struct tm *, char *, int));
-int ctime_r __P((const time_t *, char *, int));
+char *asctime_r __P((const struct tm *, char *));
+char *ctime_r __P((const time_t *, char *));
 struct tm *gmtime_r __P((const time_t *, struct tm *));
 struct tm *localtime_r __P((const time_t *, struct tm *));
 #endif
>Audit-Trail:
>Unformatted:

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-bugs" in the body of the message



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199804182338.DAA07927>