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

Re: [PATCH 2/2] better introduction of GIT with USE_NSEC defined

From
Junio C Hamano <gitster@pobox.com>
Date
Mar 5, 2009, 18:55 UTC
Message-ID
<7v4oy7241g.fsf@gitster.siamese.dyndns.org>
In-Reply-To
<49AFBDAD.5040501@viscovery.net>
Johannes Sixt <j.sixt@viscovery.net> writes:
Show 21 quoted lines
> Yes, it breaks. You can test this on Linux by commenting out these two
> lines in git-compat-util.h:
>
> diff --git a/git-compat-util.h b/git-compat-util.h
> index dcf4127..ab4b615 100644
> --- a/git-compat-util.h
> +++ b/git-compat-util.h
> @@ -44,8 +44,8 @@
>  #define _XOPEN_SOURCE_EXTENDED 1 /* AIX 5.3L needs this */
>  #endif
>  #define _ALL_SOURCE 1
> -#define _GNU_SOURCE 1
> -#define _BSD_SOURCE 1
> +/*#define _GNU_SOURCE 1*/
> +/*#define _BSD_SOURCE 1*/
>
>  #include <unistd.h>
>  #include <stdio.h>
>
> The result even passes the test suite (as long as I don't merge
> kb/checkout-optim, of course).

Isn't it better to separate "do we want to use that information if we can nanosecocond timestamps" and "is the API available for reading nanosecond timestamps" into separete switches, like this partial patch on top of the patch we are discussing, then? It is partial because it shows the way to convert only one call site as an example and of course you need to update the Makefile and autoconf.

diff --git a/git-compat-util.h b/git-compat-util.h
index 079cbe9..910aa03 100644
--- a/git-compat-util.h
+++ b/git-compat-util.h
@@ -384,4 +384,12 @@ void git_qsort(void *base, size_t nmemb, size_t size,
 # define FORCE_DIR_SET_GID 0
 #endif
 
+#ifdef HAS_NSEC
+#define ST_CTIME_NSEC(st) ((unsigned ing)((st).st_ctim.tv_nsec))
+#define ST_MTIME_NSEC(st) ((unsigned ing)((st).st_mtim.tv_nsec))
+#else
+#define ST_CTIME_NSEC(st) 0
+#define ST_MTIME_NSEC(st) 0
+#endif
+
 #endif
diff --git a/read-cache.c b/read-cache.c
index 91f1d03..bb5cb2b 100644
--- a/read-cache.c
+++ b/read-cache.c
@@ -69,13 +69,8 @@ void fill_stat_cache_info(struct cache_entry *ce, struct stat *st)
 {
 	ce->ce_ctime.sec = (unsigned int)st->st_ctime;
 	ce->ce_mtime.sec = (unsigned int)st->st_mtime;
-#ifdef USE_NSEC
-	ce->ce_ctime.nsec = (unsigned int)st->st_ctim.tv_nsec;
-	ce->ce_mtime.nsec = (unsigned int)st->st_mtim.tv_nsec;
-#else
-	ce->ce_ctime.nsec = 0;
-	ce->ce_mtime.nsec = 0;
-#endif
+	ce->ce_ctime.nsec = ST_CTIME_NSEC(*st);
+	ce->ce_mtime.nsec = ST_MTIME_NSEC(*st);
 	ce->ce_dev = st->st_dev;
 	ce->ce_ino = st->st_ino;
 	ce->ce_uid = st->st_uid;
Previous: Johannes SixtNext: Junio C Hamano
Message 9 of 11 in “some few more 'git checkout' improvements”
  1. 0/2 some few more 'git checkout' improvementsKjetil Barvik, Mar 4, 2009
  2. 1/2 stat_tracking_info(): only count real commitsKjetil Barvik, Mar 4, 2009
  3. 2/2 better introduction of GIT with USE_NSEC definedKjetil Barvik, Mar 4, 2009
  4. Junio C HamanoMar 5, 2009
  5. Kjetil BarvikMar 5, 2009
  6. Junio C HamanoMar 5, 2009
  7. Johannes SixtMar 5, 2009
  8. Johannes SixtMar 5, 2009
  9. Junio C HamanoMar 5, 2009
  10. Junio C HamanoMar 5, 2009
  11. Johannes SixtMar 6, 2009

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.