Re: [RFC] Support for HP NonStop

2 messages, 2 authors, 2016-06-15 · open the first message on its own page

Re: [RFC] Support for HP NonStop

From: Junio C Hamano <hidden>
Date: 2016-06-15 22:54:34

"Joachim Schmitz" [off-list ref] writes:
Reminds me of a related issue: in compat/fnmatch/fnmatch.c there is this:
#if HAVE_STRING_H || defined _LIBC
# include <string.h>
#else
# include <strings.h>
#endif

There's no place where HAVE_STRING_H get set
This looks wrong to me,...
This is because it is a borrowed file from glibc, and we try to
minimize changes to such a file.

If you need HAVE_STRING_H to force inclusion of <string.h> on your
platform, doing this:
       COMPAT_CFLAGS += -DHAVE_STRING_H=1 # needed in compat/fnmatch/fnmatch.c
is perfectly the right thing to do.
Do platforms exist without string.h?
Maybe fnmatch.c should look like this instead?
We try to minimize changes to such a file we borrow from upstream;
especially we do not do so lightly when we have to ask "do platforms
exist?"  Of course, they do---otherwise glibc folks wouldn't have
written such a conditional.

RE: [RFC] Support for HP NonStop

From: Joachim Schmitz <hidden>
Date: 2016-06-15 22:54:34

From: Junio C Hamano [mailto:gitster@pobox.com]
Sent: Friday, August 24, 2012 11:51 PM
To: Joachim Schmitz
Cc: git@vger.kernel.org
Subject: Re: [RFC] Support for HP NonStop

"Joachim Schmitz" [off-list ref] writes:
quoted
Reminds me of a related issue: in compat/fnmatch/fnmatch.c there is this:
#if HAVE_STRING_H || defined _LIBC
# include <string.h>
#else
# include <strings.h>
#endif

There's no place where HAVE_STRING_H get set
This looks wrong to me,...
This is because it is a borrowed file from glibc, and we try to
minimize changes to such a file.

If you need HAVE_STRING_H to force inclusion of <string.h> on your
platform, doing this:
quoted
       COMPAT_CFLAGS += -DHAVE_STRING_H=1 # needed in compat/fnmatch/fnmatch.c
is perfectly the right thing to do.
It should be set by default and those that don't have it, should (have to) disable it.
In Makefile:

ifndef NO_STRING_H
        COMPAT_CFLAGS += -DHAVE_STRING_H=1 # needed in compat/fnmatch/fnmatch.c 
endif
quoted
Do platforms exist without string.h?
Maybe fnmatch.c should look like this instead?
We try to minimize changes to such a file we borrow from upstream;
Valid point, but...
especially we do not do so lightly when we have to ask "do platforms
exist?"  Of course, they do---otherwise glibc folks wouldn't have
written such a conditional.
Hmm, well, why then doesn't git-compat.util.h use the same mechanism? (and no ,it should not!)
I guess because as of now nobody ever tried to port git to a platform that doesn't have string.h.

string.h is C89 ANSI/ISO standard (and was part of even the earliest K&C C), in place since more than 22 years now! It may not be
available on embedded platforms, but those won't be able to run git anyway I'd guess.

Newer version of gnulib's fnmatch.c don't use this anymore, git's is from 99, according to the Copyright:
Copyright (C) 1991, 92, 93, 96, 97, 98, 99

The current gnulib one shows:
Copyright (C) 1991-1993, 1996-2007, 2009-2012

Time to upgrade, if you'd ask me...

Same may go for poll.c BTW

Bye, Jojo
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help