summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohannes Hofmann <Johannes.Hofmann@gmx.de>2009-04-07 09:26:13 +0200
committerJohannes Hofmann <Johannes.Hofmann@gmx.de>2009-04-07 09:26:13 +0200
commit73b38c69e3dadacda33a2df00b3b5f62bc895256 (patch)
tree58548942978d4d16563b219b54c721995aa22794
parent5d2caa8ff7585772e7d36ee4d958e0f46d0e3baf (diff)
bring in strsep() implementation
-rw-r--r--src/Hill.cxx1
-rw-r--r--src/Makefile.am4
-rw-r--r--src/strsep.c70
-rw-r--r--src/strsep.h12
4 files changed, 86 insertions, 1 deletions
diff --git a/src/Hill.cxx b/src/Hill.cxx
index d57c576..2f4a6e7 100644
--- a/src/Hill.cxx
+++ b/src/Hill.cxx
@@ -9,6 +9,7 @@
#include <string.h>
#include <math.h>
+#include "strsep.h"
#include "Hill.H"
static double pi_d, deg2rad;
diff --git a/src/Makefile.am b/src/Makefile.am
index acf66f5..5686c2b 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -3,6 +3,7 @@ bin_PROGRAMS = gipfel
gipfel_SOURCES = \
gipfel.cxx \
util.c \
+ strsep.c \
GipfelWidget.cxx \
Panorama.cxx \
ProjectionLSQ.cxx \
@@ -40,4 +41,5 @@ noinst_HEADERS = \
PreviewOutputImage.H \
ImageMetaData.H \
ScreenDump.H \
- util.h
+ util.h \
+ strsep.h
diff --git a/src/strsep.c b/src/strsep.c
new file mode 100644
index 0000000..c8e4be0
--- /dev/null
+++ b/src/strsep.c
@@ -0,0 +1,70 @@
+/* Copyright (C) 1992, 93, 96, 97, 98, 99, 2004 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 Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#include "../config.h"
+
+#ifndef HAVE_STRSEP
+
+#include "string.h"
+
+char *
+strsep (char **stringp, const char *delim)
+{
+ char *begin, *end;
+
+ begin = *stringp;
+ if (begin == NULL)
+ return NULL;
+
+ /* A frequent case is when the delimiter string contains only one
+ character. Here we don't need to call the expensive `strpbrk'
+ function and instead work using `strchr'. */
+ if (delim[0] == '\0' || delim[1] == '\0')
+ {
+ char ch = delim[0];
+
+ if (ch == '\0')
+ end = NULL;
+ else
+ {
+ if (*begin == ch)
+ end = begin;
+ else if (*begin == '\0')
+ end = NULL;
+ else
+ end = strchr (begin + 1, ch);
+ }
+ }
+ else
+ /* Find the end of the token. */
+ end = strpbrk (begin, delim);
+
+ if (end)
+ {
+ /* Terminate the token and set *STRINGP past NUL character. */
+ *end++ = '\0';
+ *stringp = end;
+ }
+ else
+ /* No more delimiters; this is the last token. */
+ *stringp = NULL;
+
+ return begin;
+}
+
+#endif
diff --git a/src/strsep.h b/src/strsep.h
new file mode 100644
index 0000000..28295ba
--- /dev/null
+++ b/src/strsep.h
@@ -0,0 +1,12 @@
+/*
+ * Copyright 2008 Johannes Hofmann <Johannes.Hofmann@gmx.de>
+ *
+ * This software may be used and distributed according to the terms
+ * of the GNU General Public License, incorporated herein by reference.
+ */
+
+#include "../config.h"
+
+#ifndef HAVE_STRSEP
+char * strsep (char **stringp, const char *delim);
+#endif