git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH 3/9] autoconf: Check for struct timespec

From
Jonas 'Sortie' Termansen <sortie@maxsi.org>
Date
Aug 28, 2014, 01:04 UTC
Message-ID
<1409187862-21257-4-git-send-email-sortie@maxsi.org>
In-Reply-To
<1409187862-21257-1-git-send-email-sortie@maxsi.org>
This type will be used in a following commit.

This type was not previously used by git. This can cause trouble for people on systems without struct timespec if they only rely on config.mak.uname. They will need to set NO_STRUCT_TIMESPEC manually.

Signed-off-by: Jonas 'Sortie' Termansen <sortie@maxsi.org>
---

This patch can be improved by finding out which systems doesn't have struct timespec and adding entries for them to config.mak.uname.

 Makefile          | 5 +++++
 config.mak.uname  | 2 ++
 configure.ac      | 7 +++++++
 git-compat-util.h | 7 +++++++
 4 files changed, 21 insertions(+)
diff --git a/Makefile b/Makefile
index 54266fd..0dd3e35 100644
--- a/Makefile
+++ b/Makefile
@@ -184,6 +184,8 @@ all::
 #
 # Define NO_TIMER_T if you don't have timer_t.
 #
+# Define NO_STRUCT_TIMESPEC if you don't have struct timespec
+#
 # Define NO_STRUCT_ITIMERVAL if you don't have struct itimerval
 # This also implies NO_SETITIMER
 #
@@ -1343,6 +1345,9 @@ endif
 ifdef NO_TIMER_T
 	COMPAT_CFLAGS += -DNO_TIMER_T
 endif
+ifdef NO_STRUCT_TIMESPEC
+	COMPAT_CFLAGS += -DNO_STRUCT_TIMESPEC
+endif
 ifdef NO_STRUCT_ITIMERVAL
 	COMPAT_CFLAGS += -DNO_STRUCT_ITIMERVAL
 	NO_SETITIMER = YesPlease
diff --git a/config.mak.uname b/config.mak.uname
index a5297a2..8121791 100644
--- a/config.mak.uname
+++ b/config.mak.uname
@@ -356,6 +356,7 @@ ifeq ($(uname_S),Windows)
 	DEFAULT_HELP_FORMAT = html
 	NO_D_INO_IN_DIRENT = YesPlease
 	NO_TIMER_T = UnfortunatelyYes
+	NO_STRUCT_TIMESPEC = UnfortunatelyYes
 
 	CC = compat/vcbuild/scripts/clink.pl
 	AR = compat/vcbuild/scripts/lib.pl
@@ -506,6 +507,7 @@ ifneq (,$(findstring MINGW,$(uname_S)))
 	DEFAULT_HELP_FORMAT = html
 	NO_D_INO_IN_DIRENT = YesPlease
 	NO_TIMER_T = UnfortunatelyYes
+	NO_STRUCT_TIMESPEC = UnfortunatelyYes
 	COMPAT_CFLAGS += -D__USE_MINGW_ACCESS -D_USE_32BIT_TIME_T -DNOGDI -Icompat -Icompat/win32
 	COMPAT_CFLAGS += -DSTRIP_EXTENSION=\".exe\"
 	COMPAT_OBJS += compat/mingw.o compat/winansi.o \
diff --git a/configure.ac b/configure.ac
index c57fd25..5a5b167 100644
--- a/configure.ac
+++ b/configure.ac
@@ -754,6 +754,13 @@ AC_CHECK_TYPES([timer_t],
  #include <time.h>])
 GIT_CONF_SUBST([NO_TIMER_T])
 #
+# Define NO_STRUCT_TIMESPEC if you don't have struct timespec.
+AC_CHECK_TYPES([struct timespec],
+[NO_STRUCT_TIMESPEC=],
+[NO_STRUCT_TIMESPEC=UnfortunatelyYes],
+[#include <sys/time.h>])
+GIT_CONF_SUBST([NO_STRUCT_TIMESPEC])
+#
 # Define NO_D_INO_IN_DIRENT if you don't have d_ino in your struct dirent.
 AC_CHECK_MEMBER(struct dirent.d_ino,
 [NO_D_INO_IN_DIRENT=],
diff --git a/git-compat-util.h b/git-compat-util.h
index e0e7a62..e9e7e54 100644
--- a/git-compat-util.h
+++ b/git-compat-util.h
@@ -191,6 +191,13 @@ extern int compat_mkdir_wo_trailing_slash(const char*, mode_t);
 typedef int timer_t;
 #endif
 
+#ifdef NO_STRUCT_TIMESPEC
+struct timespec {
+	time_t tv_sec;
+	long tv_nsec;
+};
+#endif
+
 #ifdef NO_STRUCT_ITIMERVAL
 struct itimerval {
 	struct timeval it_interval;
-- 
2.1.0
Previous: Jonas 'Sortie' TermansenNext: Jonas 'Sortie' Termansen
Message 5 of 16 in “Use timer_settime for new platforms”
  1. 0/9 Use timer_settime for new platformsJonas 'Sortie' Termansen, Aug 28, 2014
  2. 1/9 git-compat-util.h: Add missing semicolon after struct itimervalJonas 'Sortie' Termansen, Aug 28, 2014
  3. 2/9 autoconf: Check for timer_tJonas 'Sortie' Termansen, Aug 28, 2014
  4. Jonas 'Sortie' TermansenAug 28, 2014
  5. 3/9 autoconf: Check for struct timespecJonas 'Sortie' Termansen, Aug 28, 2014
  6. 4/9 autoconf: Check for struct sigeventJonas 'Sortie' Termansen, Aug 28, 2014
  7. 5/9 autoconf: Check for struct itimervalJonas 'Sortie' Termansen, Aug 28, 2014
  8. Junio C HamanoAug 28, 2014
  9. 6/9 autoconf: Check for struct itimerspecJonas 'Sortie' Termansen, Aug 28, 2014
  10. 7/9 autoconf: Check for setitimerJonas 'Sortie' Termansen, Aug 28, 2014
  11. 8/9 autoconf: Check for timer_settimeJonas 'Sortie' Termansen, Aug 28, 2014
  12. Keller, Jacob EAug 29, 2014
  13. Jonas 'Sortie' TermansenAug 29, 2014
  14. 9/9 Use timer_settime for new platformsJonas 'Sortie' Termansen, Aug 28, 2014
  15. Junio C HamanoAug 28, 2014
  16. Keller, Jacob EAug 29, 2014

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.