# [PATCH v2 2/2] configure: add getdelim() check

4 messages from 2015-06-02 to 2015-06-03. Participants: Eric Sunshine, Jeff King.
Thread: https://gitlist.dev/t/39504

## Eric Sunshine, 2015-06-02 21:15

Subject: [PATCH v2 0/2] auto-detect getdelim()
Message-ID: <1433279744-23379-1-git-send-email-sunshine@sunshineco.com>
URL: https://gitlist.dev/e/1433279744-23379-1-git-send-email-sunshine%40sunshineco.com

```
This series updates config.mak.uname to define HAVE_GETDELIM on Mac OS X
when appropriate, and adds a configure check for the same.

Changes since v1[1]:

patch 1/2 -- optimize OS X version recognition:

* Use `...` for 'expr' invocation to extract digits from $(uname_R),
  thus only a fork(), rather than gmake $(shell...), which spawns via
  fork()+exec().

* Use 'test' relational operator -ge rather than 'expr >=', along with
  'echo' to compare version number. Since 'test' and 'echo' are
  typically shell builtins, this should be faster than invoking 'expr' a
  second time.

patch 2/2 -- unchanged

[1]: http://thread.gmane.org/gmane.comp.version-control.git/270576

Eric Sunshine (2):
  config.mak.uname: Darwin: define HAVE_GETDELIM for modern OS X
    releases
  configure: add getdelim() check

 config.mak.uname | 3 +++
 configure.ac     | 6 ++++++
 2 files changed, 9 insertions(+)

-- 
2.4.2.598.gb4379f4

```

## Eric Sunshine, 2015-06-02 21:15

Subject: [PATCH v2 1/2] config.mak.uname: Darwin: define HAVE_GETDELIM for modern OS X releases
Message-ID: <1433279744-23379-2-git-send-email-sunshine@sunshineco.com>
URL: https://gitlist.dev/e/1433279744-23379-2-git-send-email-sunshine%40sunshineco.com
In-Reply-To: <1433279744-23379-1-git-send-email-sunshine@sunshineco.com>

```
On Mac OS X, getdelim() first became available with Xcode 4.1[1], which
was released the same day as OS X 10.7 "Lion", so assume getdelim()
availability from 10.7 onward. (As of this writing, OS X is at 10.10
"Yosemite".)

According to Wikipedia[2], 4.1 was also available for download by paying
developers on OS X 10.6 "Snow Leopard", so it's possible that some 10.6
machines may have getdelim(). However, as strbuf's use of getdelim() is
purely an optimization, let's be conservative and assume 10.6 and
earlier lack getdelim().

[1]: Or, possibly with Xcode 4.0, but that version is no longer
     available for download, or not available to non-paying developers,
     so testing is not possible.

[2]: http://en.wikipedia.org/wiki/Xcode

Helped-by: Jeff King <peff@peff.net>
Signed-off-by: Eric Sunshine <sunshine@sunshineco.com>
---
 config.mak.uname | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/config.mak.uname b/config.mak.uname
index d26665f..943c439 100644
--- a/config.mak.uname
+++ b/config.mak.uname
@@ -102,6 +102,9 @@ ifeq ($(uname_S),Darwin)
 	ifeq ($(shell expr "$(uname_R)" : '[15]\.'),2)
 		NO_STRLCPY = YesPlease
 	endif
+	ifeq ($(shell test "`expr "$(uname_R)" : '\([0-9][0-9]*\)\.'`" -ge 11 && echo 1),1)
+		HAVE_GETDELIM = YesPlease
+	endif
 	NO_MEMMEM = YesPlease
 	USE_ST_TIMESPEC = YesPlease
 	HAVE_DEV_TTY = YesPlease
-- 
2.4.2.598.gb4379f4

```

## Eric Sunshine, 2015-06-02 21:15

Subject: [PATCH v2 2/2] configure: add getdelim() check
Message-ID: <1433279744-23379-3-git-send-email-sunshine@sunshineco.com>
URL: https://gitlist.dev/e/1433279744-23379-3-git-send-email-sunshine%40sunshineco.com
In-Reply-To: <1433279744-23379-1-git-send-email-sunshine@sunshineco.com>

```
As an optimization, strbuf will take advantage of getdelim() if
available, so add a configure check which defines HAVE_GETDELIM if
found.

Signed-off-by: Eric Sunshine <sunshine@sunshineco.com>
---
 configure.ac | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/configure.ac b/configure.ac
index bbdde85..14012fa 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1041,6 +1041,12 @@ GIT_CHECK_FUNC(initgroups,
 [NO_INITGROUPS=YesPlease])
 GIT_CONF_SUBST([NO_INITGROUPS])
 #
+# Define HAVE_GETDELIM if you have getdelim in the C library.
+GIT_CHECK_FUNC(getdelim,
+[HAVE_GETDELIM=YesPlease],
+[HAVE_GETDELIM=])
+GIT_CONF_SUBST([HAVE_GETDELIM])
+#
 #
 # Define NO_MMAP if you want to avoid mmap.
 #
-- 
2.4.2.598.gb4379f4

```

## Jeff King, 2015-06-03 04:35

Subject: Re: [PATCH v2 0/2] auto-detect getdelim()
Message-ID: <20150603043532.GB15989@peff.net>
URL: https://gitlist.dev/e/20150603043532.GB15989%40peff.net
In-Reply-To: <1433279744-23379-1-git-send-email-sunshine@sunshineco.com>

```
On Tue, Jun 02, 2015 at 05:15:42PM -0400, Eric Sunshine wrote:

> This series updates config.mak.uname to define HAVE_GETDELIM on Mac OS X
> when appropriate, and adds a configure check for the same.
> 
> Changes since v1[1]:
> 
> patch 1/2 -- optimize OS X version recognition:
> 
> * Use `...` for 'expr' invocation to extract digits from $(uname_R),
>   thus only a fork(), rather than gmake $(shell...), which spawns via
>   fork()+exec().
> 
> * Use 'test' relational operator -ge rather than 'expr >=', along with
>   'echo' to compare version number. Since 'test' and 'echo' are
>   typically shell builtins, this should be faster than invoking 'expr' a
>   second time.
> 
> patch 2/2 -- unchanged

Thanks, this version looks good to me.

-Peff

```
