[120397] trunk/dports/devel/girara

devans at macports.org devans at macports.org
Tue May 27 09:54:53 PDT 2014


Revision: 120397
          https://trac.macports.org/changeset/120397
Author:   devans at macports.org
Date:     2014-05-27 09:54:53 -0700 (Tue, 27 May 2014)
Log Message:
-----------
girara: maintainer fix for missing getline on SL and earlier (#43804).

Modified Paths:
--------------
    trunk/dports/devel/girara/Portfile

Added Paths:
-----------
    trunk/dports/devel/girara/files/patch-getdelim.c.diff
    trunk/dports/devel/girara/files/patch-getdelim.h.diff
    trunk/dports/devel/girara/files/patch-getline.c.diff
    trunk/dports/devel/girara/files/patch-getline.h.diff

Modified: trunk/dports/devel/girara/Portfile
===================================================================
--- trunk/dports/devel/girara/Portfile	2014-05-27 15:06:04 UTC (rev 120396)
+++ trunk/dports/devel/girara/Portfile	2014-05-27 16:54:53 UTC (rev 120397)
@@ -26,9 +26,8 @@
 
 master_sites        ${homepage}download/
 
-checksums           \
-    rmd160 e89c075c353548740ab9e3de1d8e6ccea61823f6 \
-    sha256 d14b54cb04d81ba3b84ad41c5e68951d250b455d0862add1c987e3af9e2e174d
+checksums           rmd160 e89c075c353548740ab9e3de1d8e6ccea61823f6 \
+                    sha256 d14b54cb04d81ba3b84ad41c5e68951d250b455d0862add1c987e3af9e2e174d
 
 patchfiles          patch-Makefile.diff \
                     patch-config.mk.diff
@@ -53,6 +52,22 @@
 
 variant universal   {}
 
+platform darwin     {
+# Before 10.7 there's no getline() in stdio.h
+# http://stackoverflow.com/a/1117158/205907
+    if {${os.major} < 11} {
+# Using CVS project implementation
+# http://www.opensource.apple.com/source/cvs/cvs-47/cvs/lib/getline.c?txt
+# http://www.opensource.apple.com/source/cvs/cvs-47/cvs/lib/getline.h?txt
+# http://www.opensource.apple.com/source/cvs/cvs-47/cvs/lib/getdelim.c?txt
+# http://www.opensource.apple.com/source/cvs/cvs-47/cvs/lib/getdelim.h?txt
+        patchfiles-append   patch-getline.h.diff \
+                            patch-getline.c.diff \
+                            patch-getdelim.h.diff \
+                            patch-getdelim.c.diff
+    }
+}
+
 build.args          PREFIX=${prefix}
 build.env           CC=${configure.cc} \
                     CXX=${configure.cxx} \

Added: trunk/dports/devel/girara/files/patch-getdelim.c.diff
===================================================================
--- trunk/dports/devel/girara/files/patch-getdelim.c.diff	                        (rev 0)
+++ trunk/dports/devel/girara/files/patch-getdelim.c.diff	2014-05-27 16:54:53 UTC (rev 120397)
@@ -0,0 +1,122 @@
+--- /dev/null	2014-05-26 23:26:54.000000000 -0500
++++ getdelim.c	2014-05-26 19:08:15.000000000 -0500
+@@ -0,0 +1,119 @@
++/* getdelim.c --- Implementation of replacement getdelim function.
++   Copyright (C) 1994, 1996, 1997, 1998, 2001, 2003, 2005 Free
++   Software Foundation, Inc.
++
++   This program is free software; you can redistribute it and/or
++   modify it under the terms of the GNU General Public License as
++   published by the Free Software Foundation; either version 2, or (at
++   your option) any later version.
++
++   This program is distributed in the hope that it will be useful, but
++   WITHOUT ANY WARRANTY; without even the implied warranty of
++   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++   General Public License for more details.
++
++   You should have received a copy of the GNU General Public License
++   along with this program; if not, write to the Free Software
++   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
++   02110-1301, USA.  */
++
++/* Ported from glibc by Simon Josefsson. */
++
++#ifdef HAVE_CONFIG_H
++# include <config.h>
++#endif
++
++#include <stdlib.h>
++#include <errno.h>
++
++#include "getdelim.h"
++
++#if !HAVE_FLOCKFILE
++# undef flockfile
++# define flockfile(x) ((void) 0)
++#endif
++#if !HAVE_FUNLOCKFILE
++# undef funlockfile
++# define funlockfile(x) ((void) 0)
++#endif
++
++/* Read up to (and including) a DELIMITER from FP into *LINEPTR (and
++   NUL-terminate it).  *LINEPTR is a pointer returned from malloc (or
++   NULL), pointing to *N characters of space.  It is realloc'ed as
++   necessary.  Returns the number of characters read (not including
++   the null terminator), or -1 on error or EOF.  */
++
++ssize_t
++getdelim (char **lineptr, size_t *n, int delimiter, FILE *fp)
++{
++  int result = 0;
++  ssize_t cur_len = 0;
++  ssize_t len;
++
++  if (lineptr == NULL || n == NULL || fp == NULL)
++    {
++      errno = EINVAL;
++      return -1;
++    }
++
++  flockfile (fp);
++
++  if (*lineptr == NULL || *n == 0)
++    {
++      *n = 120;
++      *lineptr = (char *) malloc (*n);
++      if (*lineptr == NULL)
++	{
++	  result = -1;
++	  goto unlock_return;
++	}
++    }
++
++  for (;;)
++    {
++      char *t;
++      int i;
++
++      i = getc (fp);
++      if (i == EOF)
++      {
++	result = -1;
++	break;
++      }
++
++      /* Make enough space for len+1 (for final NUL) bytes.  */
++      if (cur_len + 1 >= *n)
++	{
++	  size_t needed = 2 * (cur_len + 1) + 1;   /* Be generous. */
++	  char *new_lineptr;
++
++	  if (needed < cur_len)
++	    {
++	      result = -1;
++	      goto unlock_return;
++	    }
++
++	  new_lineptr = (char *) realloc (*lineptr, needed);
++	  if (new_lineptr == NULL)
++	    {
++	      result = -1;
++	      goto unlock_return;
++	    }
++
++	  *lineptr = new_lineptr;
++	  *n = needed;
++	}
++
++      (*lineptr)[cur_len] = i;
++      cur_len++;
++
++      if (i == delimiter)
++	break;
++    }
++  (*lineptr)[cur_len] = '\0';
++  result = cur_len ? cur_len : result;
++
++ unlock_return:
++  funlockfile (fp);
++  return result;
++}

Added: trunk/dports/devel/girara/files/patch-getdelim.h.diff
===================================================================
--- trunk/dports/devel/girara/files/patch-getdelim.h.diff	                        (rev 0)
+++ trunk/dports/devel/girara/files/patch-getdelim.h.diff	2014-05-27 16:54:53 UTC (rev 120397)
@@ -0,0 +1,31 @@
+--- /dev/null	2014-05-26 23:26:54.000000000 -0500
++++ getdelim.h	2014-05-26 19:08:33.000000000 -0500
+@@ -0,0 +1,28 @@
++/* getdelim.h --- Prototype for replacement getdelim function.
++   Copyright (C) 2005 Free Software Foundation, Inc.
++
++   This program is free software; you can redistribute it and/or
++   modify it under the terms of the GNU General Public License as
++   published by the Free Software Foundation; either version 2, or (at
++   your option) any later version.
++
++   This program is distributed in the hope that it will be useful, but
++   WITHOUT ANY WARRANTY; without even the implied warranty of
++   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++   General Public License for more details.
++
++   You should have received a copy of the GNU General Public License
++   along with this program; if not, write to the Free Software
++   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
++   02110-1301, USA.  */
++
++/* Written by Simon Josefsson. */
++
++/* Get size_t, FILE, ssize_t.  And getdelim, if available.  */
++# include <stddef.h>
++# include <stdio.h>
++# include <sys/types.h>
++
++#if !HAVE_DECL_GETDELIM
++ssize_t getdelim (char **lineptr, size_t *n, int delimiter, FILE *stream);
++#endif /* !HAVE_GETDELIM */

Added: trunk/dports/devel/girara/files/patch-getline.c.diff
===================================================================
--- trunk/dports/devel/girara/files/patch-getline.c.diff	                        (rev 0)
+++ trunk/dports/devel/girara/files/patch-getline.c.diff	2014-05-27 16:54:53 UTC (rev 120397)
@@ -0,0 +1,35 @@
+--- /dev/null	2014-05-26 23:26:54.000000000 -0500
++++ getline.c	2014-05-26 19:08:42.000000000 -0500
+@@ -0,0 +1,32 @@
++/* getline.c --- Implementation of replacement getline function.
++   Copyright (C) 2005 Free Software Foundation, Inc.
++
++   This program is free software; you can redistribute it and/or
++   modify it under the terms of the GNU General Public License as
++   published by the Free Software Foundation; either version 2, or (at
++   your option) any later version.
++
++   This program is distributed in the hope that it will be useful, but
++   WITHOUT ANY WARRANTY; without even the implied warranty of
++   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++   General Public License for more details.
++
++   You should have received a copy of the GNU General Public License
++   along with this program; if not, write to the Free Software
++   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
++   02110-1301, USA.  */
++
++/* Written by Simon Josefsson. */
++
++#ifdef HAVE_CONFIG_H
++# include <config.h>
++#endif
++
++#include "getdelim.h"
++#include "getline.h"
++
++ssize_t
++getline (char **lineptr, size_t *n, FILE *stream)
++{
++  return getdelim (lineptr, n, '\n', stream);
++}

Added: trunk/dports/devel/girara/files/patch-getline.h.diff
===================================================================
--- trunk/dports/devel/girara/files/patch-getline.h.diff	                        (rev 0)
+++ trunk/dports/devel/girara/files/patch-getline.h.diff	2014-05-27 16:54:53 UTC (rev 120397)
@@ -0,0 +1,31 @@
+--- /dev/null	2014-05-26 23:26:54.000000000 -0500
++++ getline.h	2014-05-26 19:08:50.000000000 -0500
+@@ -0,0 +1,28 @@
++/* getline.h --- Prototype for replacement getline function.
++   Copyright (C) 2005 Free Software Foundation, Inc.
++
++   This program is free software; you can redistribute it and/or
++   modify it under the terms of the GNU General Public License as
++   published by the Free Software Foundation; either version 2, or (at
++   your option) any later version.
++
++   This program is distributed in the hope that it will be useful, but
++   WITHOUT ANY WARRANTY; without even the implied warranty of
++   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++   General Public License for more details.
++
++   You should have received a copy of the GNU General Public License
++   along with this program; if not, write to the Free Software
++   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
++   02110-1301, USA.  */
++
++/* Written by Simon Josefsson. */
++
++/* Get size_t, FILE, ssize_t.  And getline, if available.  */
++# include <stddef.h>
++# include <stdio.h>
++# include <sys/types.h>
++
++#if !HAVE_DECL_GETLINE
++ssize_t getline (char **lineptr, size_t *n, FILE *stream);
++#endif /* !HAVE_GETLINE */
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.macosforge.org/pipermail/macports-changes/attachments/20140527/943b9b93/attachment-0001.html>


More information about the macports-changes mailing list