mirror of
https://github.com/macports/macports-ports.git
synced 2026-07-12 18:20:25 -07:00
192 lines
5.2 KiB
Diff
192 lines
5.2 KiB
Diff
diff --git CMakeLists.txt CMakeLists.txt
|
|
index 04d8f36..3ab997e 100644
|
|
--- CMakeLists.txt
|
|
+++ CMakeLists.txt
|
|
@@ -21,9 +21,10 @@ set(PLATFORM_SPECIFIC_LIBS)
|
|
if (APPLE)
|
|
find_library(LIB_ARGP argp)
|
|
|
|
+ find_library(LIB_POSIX_MACOS_TIME posix-macos-time)
|
|
find_library(LIB_POSIX_MACOS_TIMER posix-macos-timer)
|
|
|
|
- set(PLATFORM_SPECIFIC_LIBS ${LIB_ARGP} ${LIB_POSIX_MACOS_TIMER})
|
|
+ set(PLATFORM_SPECIFIC_LIBS ${LIB_ARGP} ${LIB_POSIX_MACOS_TIME} ${LIB_POSIX_MACOS_TIMER})
|
|
else ()
|
|
set(PLATFORM_SPECIFIC_LIBS rt)
|
|
endif()
|
|
diff --git src/io/getdelim.c src/io/getdelim.c
|
|
new file mode 100644
|
|
index 0000000..c954757
|
|
--- /dev/null
|
|
+++ src/io/getdelim.c
|
|
@@ -0,0 +1,104 @@
|
|
+#if __MAC_OS_X_VERSION_MAX_ALLOWED < 101200
|
|
+/* Copyright (C) 1991, 1992, 1995, 1996, 1997 Free Software Foundation, Inc.
|
|
+ This file is part of the GNU C Library.
|
|
+
|
|
+ The GNU C Library is free software; you can redistribute it and/or
|
|
+ modify it under the terms of the GNU Library General Public License as
|
|
+ published by the Free Software Foundation; either version 2 of the
|
|
+ License, or (at your option) any later version.
|
|
+
|
|
+ The GNU C Library 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
|
|
+ Library General Public License for more details.
|
|
+
|
|
+ You should have received a copy of the GNU Library General Public
|
|
+ License along with the GNU C Library; see the file COPYING.LIB. If not,
|
|
+ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
|
+ Boston, MA 02111-1307, USA. */
|
|
+
|
|
+#include <stddef.h>
|
|
+#include <stdio.h>
|
|
+#include <stdlib.h>
|
|
+#include <string.h>
|
|
+#include <limits.h>
|
|
+#include <errno.h>
|
|
+
|
|
+/* Read up to (and including) a TERMINATOR from STREAM into *LINEPTR
|
|
+ (and null-terminate it). *LINEPTR is a pointer returned from malloc (or
|
|
+ NULL), pointing to *N characters of space. It is realloc'd as
|
|
+ necessary. Returns the number of characters read (not including the
|
|
+ null terminator), or -1 on error or EOF. */
|
|
+
|
|
+ssize_t
|
|
+getdelim (lineptr, n, terminator, stream)
|
|
+ char **lineptr;
|
|
+ size_t *n;
|
|
+ int terminator;
|
|
+ FILE *stream;
|
|
+{
|
|
+ char *line, *p;
|
|
+ size_t size, copy;
|
|
+
|
|
+ if (stream == NULL || lineptr == NULL || n == NULL)
|
|
+ {
|
|
+ errno = EINVAL;
|
|
+ return -1;
|
|
+ }
|
|
+
|
|
+ if (ferror (stream))
|
|
+ return -1;
|
|
+
|
|
+ /* Make sure we have a line buffer to start with. */
|
|
+ if (*lineptr == NULL || *n < 2) /* !seen and no buf yet need 2 chars. */
|
|
+ {
|
|
+#ifndef MAX_CANON
|
|
+#define MAX_CANON 256
|
|
+#endif
|
|
+ line = realloc (*lineptr, MAX_CANON);
|
|
+ if (line == NULL)
|
|
+ return -1;
|
|
+ *lineptr = line;
|
|
+ *n = MAX_CANON;
|
|
+ }
|
|
+
|
|
+ line = *lineptr;
|
|
+ size = *n;
|
|
+
|
|
+ copy = size;
|
|
+ p = line;
|
|
+
|
|
+ while (1)
|
|
+ {
|
|
+ size_t len;
|
|
+
|
|
+ while (--copy > 0)
|
|
+ {
|
|
+ register int c = getc (stream);
|
|
+ if (c == EOF)
|
|
+ goto lose;
|
|
+ else if ((*p++ = c) == terminator)
|
|
+ goto win;
|
|
+ }
|
|
+
|
|
+ /* Need to enlarge the line buffer. */
|
|
+ len = p - line;
|
|
+ size *= 2;
|
|
+ line = realloc (line, size);
|
|
+ if (line == NULL)
|
|
+ goto lose;
|
|
+ *lineptr = line;
|
|
+ *n = size;
|
|
+ p = line + len;
|
|
+ copy = size - len;
|
|
+ }
|
|
+
|
|
+ lose:
|
|
+ if (p == *lineptr)
|
|
+ return -1;
|
|
+ /* Return a partial line since we got an error in the middle. */
|
|
+ win:
|
|
+ *p = '\0';
|
|
+ return p - *lineptr;
|
|
+}
|
|
+#endif
|
|
diff --git src/io/getdelim.h src/io/getdelim.h
|
|
new file mode 100644
|
|
index 0000000..781a662
|
|
--- /dev/null
|
|
+++ src/io/getdelim.h
|
|
@@ -0,0 +1,32 @@
|
|
+#if __MAC_OS_X_VERSION_MAX_ALLOWED < 100700
|
|
+#ifndef _GET_DELIM_H_
|
|
+#define _GET_DELIM_H_
|
|
+/* 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>
|
|
+
|
|
+ssize_t getdelim(char **lineptr, size_t *n, int delimiter, FILE *stream);
|
|
+
|
|
+#endif
|
|
+#endif
|
|
diff --git src/io/input.c src/io/input.c
|
|
index 971ffdf..d71f121 100644
|
|
--- src/io/input.c
|
|
+++ src/io/input.c
|
|
@@ -6,6 +6,7 @@
|
|
|
|
#include "input.h"
|
|
#include "output.h"
|
|
+#include "getdelim.h"
|
|
|
|
FILE *in;
|
|
int delim;
|
|
diff --git src/util/random.c src/util/random.c
|
|
index b88bb50..b3e2ebb 100644
|
|
--- src/util/random.c
|
|
+++ src/util/random.c
|
|
@@ -8,6 +8,10 @@
|
|
#include <time.h>
|
|
#include <stdint.h>
|
|
|
|
+#ifdef __APPLE__
|
|
+#include <posix-macos-timer.h>
|
|
+#endif
|
|
+
|
|
void random_reseed(void) {
|
|
pari_ulong seed = 0;
|
|
// Try urandom first
|