From: Ramsay Jones <ramsay@ramsayjones•plus.com>
To: David Turner <dturner@twopensource•com>,
Nguyen Thai Ngoc Duy <pclouds@gmail•com>
Cc: Jeff King <peff@peff•net>, Junio C Hamano <gitster@pobox•com>,
GIT Mailing-list <git@vger•kernel.org>
Subject: [PATCH 0/3] index-helper: fix UNIX_PATH_MAX redefinition error on cygwin
Date: Sun, 10 Apr 2016 23:57:31 +0100 [thread overview]
Message-ID: <570ADA5B.5030408@ramsayjones.plus.com> (raw)
Hi David, Duy,
If you need to re-roll your 'dt/index-helper' branch, could you please
consider squashing these patches into the relevant patch (equivalent to
commit 12909da4 ("index-helper: new daemon for caching index and related
stuff", 06-04-2016)).
The above commit causes the cygwin build to throw a warning (many times)
about the redefinition of the UNIX_PATH_MAX macro, viz:
CC credential-store.o
In file included from cache.h:4:0,
from credential-store.c:1:
git-compat-util.h:1060:0: warning: "UNIX_PATH_MAX" redefined
#define UNIX_PATH_MAX 92
^
In file included from git-compat-util.h:212:0,
from cache.h:4,
from credential-store.c:1:
/usr/include/sys/un.h:18:0: note: this is the location of the previous definition
#define UNIX_PATH_MAX 108
^
Which is quite easy to confirm:
$ find /usr/include -iname '*.h' | xargs grep -n UNIX_PATH_MAX
/usr/include/sys/un.h:18:#define UNIX_PATH_MAX 108
/usr/include/sys/un.h:22: char sun_path[UNIX_PATH_MAX]; /* 108 bytes of socket address */
$ gcc -dD -E git-compat-util.h 2>/dev/null | grep -n 'un\.h'
8716:# 1 "/usr/include/sys/un.h" 1 3 4
8717:# 12 "/usr/include/sys/un.h" 3 4
$ gcc -dD -E git-compat-util.h 2>/dev/null | grep -n 'UNIX_PATH_MAX'
8724:#define UNIX_PATH_MAX 108
32675:#define UNIX_PATH_MAX 92
$
So, a simple fix would look like:
diff --git a/git-compat-util.h b/git-compat-util.h
index 0e35c13..6d65132 100644
--- a/git-compat-util.h
+++ b/git-compat-util.h
@@ -1043,7 +1043,7 @@ struct tm *git_gmtime_r(const time_t *, struct tm *);
#define getc_unlocked(fh) getc(fh)
#endif
-#ifdef __linux__
+#if defined(__linux__) || defined(__CYGWIN__)
#define UNIX_PATH_MAX 108
#elif defined(__APPLE__) || defined(BSD)
#define UNIX_PATH_MAX 104
... since you are allowed to redefine a macro to the same token sequence
(modulo some strange whitespace rules).
However, assuming the <sys/un.h> header is defining the UNIX_PATH_MAX
macro, why even try to #define it again. So, maybe put an
#ifndef UNIX_PATH_MAX
...
#endif
around the entire block. But then, why on earth are you doing this at all?
Let's look on linux:
$ find /usr/include -iname '*.h' | xargs grep -n UNIX_PATH_MAX
/usr/include/valgrind/vki/vki-linux.h:754:#define VKI_UNIX_PATH_MAX 108
/usr/include/valgrind/vki/vki-linux.h:758: char sun_path[VKI_UNIX_PATH_MAX]; /* pathname */
/usr/include/linux/un.h:6:#define UNIX_PATH_MAX 108
/usr/include/linux/un.h:10: char sun_path[UNIX_PATH_MAX]; /* pathname */
$ gcc -dD -E git-compat-util.h | grep -n 'un\.h'
14119:# 1 "/usr/include/x86_64-linux-gnu/sys/un.h" 1 3 4
14120:# 19 "/usr/include/x86_64-linux-gnu/sys/un.h" 3 4
$ gcc -dD -E git-compat-util.h | grep -n 'UNIX_PATH_MAX'
36788:#define UNIX_PATH_MAX 108
$
Ah, interesting, ... despite having a header that does indeed define the
UNIX_PATH_MAX macro, the compiler is not using that header, but another
one which doesn't. Well, blow me down. ;-)
So, the approach taken by patch #1 is to forget about UNIX_PATH_MAX and
simply use sizeof(address.sun_path) instead!
The second and third patches are simply 'mild suggestions' for other
minor issues I noticed while looking into these warnings.
ATB,
Ramsay Jones
Ramsay Jones (3):
index-helper: fix UNIX_PATH_MAX redefinition error on cygwin
index-helper: convert strncpy to memcpy
index-helper: take extra care with readlink
git-compat-util.h | 17 -----------------
index-helper.c | 4 ++--
read-cache.c | 15 +++++++++++++--
3 files changed, 15 insertions(+), 21 deletions(-)
--
2.8.0
next reply other threads:[~2016-04-10 22:57 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-04-10 22:57 Ramsay Jones [this message]
2016-04-11 13:33 ` [PATCH 0/3] index-helper: fix UNIX_PATH_MAX redefinition error on cygwin Jeff King
2016-04-11 21:29 ` David Turner
2016-04-12 1:46 ` Jeff King
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=570ADA5B.5030408@ramsayjones.plus.com \
--to=ramsay@ramsayjones$(echo .)plus.com \
--cc=dturner@twopensource$(echo .)com \
--cc=git@vger$(echo .)kernel.org \
--cc=gitster@pobox$(echo .)com \
--cc=pclouds@gmail$(echo .)com \
--cc=peff@peff$(echo .)net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox