git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
* [PATCH] compat: remove gmtime
@ 2020-05-14 19:18 Carlo Marcelo Arenas Belón
  2020-05-14 22:12 ` Jeff King
  0 siblings, 1 reply; 2+ messages in thread
From: Carlo Marcelo Arenas Belón @ 2020-05-14 19:18 UTC (permalink / raw)
  To: git; +Cc: congdanhqx, peff, cbailey32, l.s.r,
	Carlo Marcelo Arenas Belón

ccd469450a (date.c: switch to reentrant {gm,local}time_r, 2019-11-28)
removes the only gmtime() call we had and moves to gmtime_r() which
doesn't have the same portability problems.

Remove the compat gmtime code since it is no longer needed, and confirm
by successfull running t4212 in FreeBSD 9.3 amd64 (the oldest I could
get a hold off).

Further work might be needed to ensure 32bit time_t systems (like FreeBSD
i386) will handle correctly the overflows tested in t4212, but that is
orthogonal to this change, and it doesn't change the current behaviour
as neither gmtime() or gmtime_r() will ever return NULL on those systems
because time_t is unsigned.

Signed-off-by: Carlo Marcelo Arenas Belón <carenas@gmail.com>
---
 Makefile          |  8 --------
 compat/gmtime.c   | 29 -----------------------------
 config.mak.uname  |  1 -
 git-compat-util.h |  7 -------
 4 files changed, 45 deletions(-)
 delete mode 100644 compat/gmtime.c

diff --git a/Makefile b/Makefile
index 9804a0758b..12c650f259 100644
--- a/Makefile
+++ b/Makefile
@@ -405,9 +405,6 @@ all::
 # with a different indexfile format version.  If it isn't set the index
 # file format used is index-v[23].
 #
-# Define GMTIME_UNRELIABLE_ERRORS if your gmtime() function does not
-# return NULL when it receives a bogus time_t.
-#
 # Define HAVE_CLOCK_GETTIME if your platform has clock_gettime.
 #
 # Define HAVE_CLOCK_MONOTONIC if your platform has CLOCK_MONOTONIC.
@@ -1803,11 +1800,6 @@ ifndef NO_MSGFMT_EXTENDED_OPTIONS
 	MSGFMT += --check --statistics
 endif
 
-ifdef GMTIME_UNRELIABLE_ERRORS
-	COMPAT_OBJS += compat/gmtime.o
-	BASIC_CFLAGS += -DGMTIME_UNRELIABLE_ERRORS
-endif
-
 ifdef HAVE_CLOCK_GETTIME
 	BASIC_CFLAGS += -DHAVE_CLOCK_GETTIME
 endif
diff --git a/compat/gmtime.c b/compat/gmtime.c
deleted file mode 100644
index e8362dd2b9..0000000000
--- a/compat/gmtime.c
+++ /dev/null
@@ -1,29 +0,0 @@
-#include "../git-compat-util.h"
-#undef gmtime
-#undef gmtime_r
-
-struct tm *git_gmtime(const time_t *timep)
-{
-	static struct tm result;
-	return git_gmtime_r(timep, &result);
-}
-
-struct tm *git_gmtime_r(const time_t *timep, struct tm *result)
-{
-	struct tm *ret;
-
-	memset(result, 0, sizeof(*result));
-	ret = gmtime_r(timep, result);
-
-	/*
-	 * Rather than NULL, FreeBSD gmtime simply leaves the "struct tm"
-	 * untouched when it encounters overflow. Since "mday" cannot otherwise
-	 * be zero, we can test this very quickly.
-	 */
-	if (ret && !ret->tm_mday) {
-		ret = NULL;
-		errno = EOVERFLOW;
-	}
-
-	return ret;
-}
diff --git a/config.mak.uname b/config.mak.uname
index 2bff8b3466..c0852b37a5 100644
--- a/config.mak.uname
+++ b/config.mak.uname
@@ -244,7 +244,6 @@ ifeq ($(uname_S),FreeBSD)
 	PYTHON_PATH = /usr/local/bin/python
 	PERL_PATH = /usr/local/bin/perl
 	HAVE_PATHS_H = YesPlease
-	GMTIME_UNRELIABLE_ERRORS = UnfortunatelyYes
 	HAVE_BSD_SYSCTL = YesPlease
 	HAVE_BSD_KERN_PROC_SYSCTL = YesPlease
 	PAGER_ENV = LESS=FRX LV=-c MORE=FRX
diff --git a/git-compat-util.h b/git-compat-util.h
index aed0b5d4f9..f1b0a5aa0a 100644
--- a/git-compat-util.h
+++ b/git-compat-util.h
@@ -1208,13 +1208,6 @@ int access_or_die(const char *path, int mode, unsigned flag);
 /* Warn on an inaccessible file if errno indicates this is an error */
 int warn_on_fopen_errors(const char *path);
 
-#ifdef GMTIME_UNRELIABLE_ERRORS
-struct tm *git_gmtime(const time_t *);
-struct tm *git_gmtime_r(const time_t *, struct tm *);
-#define gmtime git_gmtime
-#define gmtime_r git_gmtime_r
-#endif
-
 #if !defined(USE_PARENS_AROUND_GETTEXT_N) && defined(__GNUC__)
 #define USE_PARENS_AROUND_GETTEXT_N 1
 #endif
-- 
2.26.2.812.g046d49d455


^ permalink raw reply related	[flat|nested] 2+ messages in thread

* Re: [PATCH] compat: remove gmtime
  2020-05-14 19:18 [PATCH] compat: remove gmtime Carlo Marcelo Arenas Belón
@ 2020-05-14 22:12 ` Jeff King
  0 siblings, 0 replies; 2+ messages in thread
From: Jeff King @ 2020-05-14 22:12 UTC (permalink / raw)
  To: Carlo Marcelo Arenas Belón; +Cc: git, congdanhqx, cbailey32, l.s.r

On Thu, May 14, 2020 at 12:18:54PM -0700, Carlo Marcelo Arenas Belón wrote:

> ccd469450a (date.c: switch to reentrant {gm,local}time_r, 2019-11-28)
> removes the only gmtime() call we had and moves to gmtime_r() which
> doesn't have the same portability problems.
> 
> Remove the compat gmtime code since it is no longer needed, and confirm
> by successfull running t4212 in FreeBSD 9.3 amd64 (the oldest I could
> get a hold off).

So gmtime_r() behaves differently than gmtime() on those systems in the
face of an overflowing time_t? That seems like an odd implementation
choice, but OK. If the test isn't failing, I'm just as happy to get rid
of this compat cruft.

-Peff

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2020-05-14 22:12 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-05-14 19:18 [PATCH] compat: remove gmtime Carlo Marcelo Arenas Belón
2020-05-14 22:12 ` Jeff King

Code repositories for project(s) associated with this public inbox

	https://80x24.org/mirrors/git.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).