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

Re: [RFC] Support for HP NonStop

From
Junio C Hamano <gitster@pobox.com>
Date
Aug 24, 2012, 20:12 UTC
Message-ID
<7v4nnsyrp7.fsf@alter.siamese.dyndns.org>
In-Reply-To
<005501cd822d$bf844bb0$3e8ce310$@schmitz-digital.de>
"Joachim Schmitz" <jojo@schmitz-digital.de> writes:
Show 25 quoted lines
> Hi folks
>
> On top of the patches I’ve submitted so far, which were needed for HP NonStop, 
> but possibly useful for other platforms too, here is one that is at least in parts NonStop specific
>
> diff --git a/git-compat-util.h b/git-compat-util.h
> index a047221..d6a142a 100644
> --- a/git-compat-util.h
> +++ b/git-compat-util.h
> @@ -74,7 +74,8 @@
> # define _XOPEN_SOURCE 500
> # endif
> #elif !defined(__APPLE__) && !defined(__FreeBSD__) && !defined(__USLC__) && \
> -      !defined(_M_UNIX) && !defined(__sgi) && !defined(__DragonFly__)
> +      !defined(_M_UNIX) && !defined(__sgi) && !defined(__DragonFly__) && \
> +      !defined(__TANDEM)
> #define _XOPEN_SOURCE 600 /* glibc2 and AIX 5.3L need 500, OpenBSD needs 600 fo
> #define _XOPEN_SOURCE_EXTENDED 1 /* AIX 5.3L needs this */
> #endif
> +#ifdef __TANDEM /* or HAVE_STRINGS_H ? */
> +#include <strings.h> /* for strcasecmp() */
> +#endif
> #include <errno.h>
> #include <limits.h>
> #include <sys/param.h>

Yeah, it appears that glibc headers have strcasecmp() and friends in the <string.h> and that was why majority of us were fine without including <strings.h>. A cursory look of /usr/include/strings.h on a GNU system suggests that it is safe to include <strings.h> after we incude <string.h> on that platform.

I think it is OK to leave it "__TANDEM /* or HAVE_STRINGS_H? */" for now and let the next person who wants to port us to a platform that needs this inclusion turn it to HAVE_STRINGS_H. Alternatively, we bite the bullet now and include <strings.h> on any platform that has the header file and see if anybody complains (that reminds me; I at least should get one flavor of BSD build environment for this kind of thing myself).

Show 8 quoted lines
> @@ -141,6 +145,10 @@
> #else
> #include <stdint.h>
> #endif
> +#ifdef __TANDEM /* or NO_INTPTR_T resp. NO_UINTPTR_T? */
> +typedef int intptr_t;
> +typedef unsigned int uintptr_t;
> +#endif
A bit wider context for this hunk is
	#ifndef NO_INTTYPES_H
        #include <inttypes.h>
        #else
        #include <stdint.h>
	#endif

So we have been assuming that <stdint.h> has intptr_t but __TANDEM apparently doesn't. POSIX requires intptr_t and uintptr_t to be declared for systems conforming to XSI, but otherwise these are optional (in other words, some XSI non-conforming platforms may have them in <stdint.h>), so it would not help to check _XOPEN_UNIX to see if the system is XSI X-<. We would need NO_INTPTR_T as you hinted above, perhaps like this.

	#ifndef NO_INTTYPES_H
        #include <inttypes.h>
        #else
        #include <stdint.h>
	#endif
	#ifdef NO_INTPTR_T
        typedef int intptr_t;
        typedef unsigned int uintptr_t;
	#endif
By the way, is "int" wide enough, or should they be "long"?
Previous: Joachim SchmitzNext: Joachim Schmitz
Message 2 of 7 in “[RFC] Support for HP NonStop”
  1. Joachim SchmitzAug 24, 2012
  2. Junio C HamanoAug 24, 2012
  3. Joachim SchmitzAug 24, 2012
  4. Junio C HamanoAug 24, 2012
  5. Joachim SchmitzAug 25, 2012
  6. Jan EngelhardtSep 19, 2012
  7. Joachim SchmitzSep 19, 2012

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.