diff options
-rw-r--r-- | src/Hill.cxx | 1 | ||||
-rw-r--r-- | src/Makefile.am | 4 | ||||
-rw-r--r-- | src/strsep.c | 70 | ||||
-rw-r--r-- | src/strsep.h | 12 |
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 |