diff options
author | Werner Koch <[email protected]> | 2006-10-02 11:54:35 +0000 |
---|---|---|
committer | Werner Koch <[email protected]> | 2006-10-02 11:54:35 +0000 |
commit | 4b48bcacc9a242365e85ca788c4c966d8aeb1c10 (patch) | |
tree | 21e803ec571bbe4d9288e014a16ccafe0ac45056 /jnlib/stringhelp.c | |
parent | 2006-10-02 Marcus Brinkmann <[email protected]> (diff) | |
download | gnupg-4b48bcacc9a242365e85ca788c4c966d8aeb1c10.tar.gz gnupg-4b48bcacc9a242365e85ca788c4c966d8aeb1c10.zip |
Fix for bug 537
Diffstat (limited to 'jnlib/stringhelp.c')
-rw-r--r-- | jnlib/stringhelp.c | 75 |
1 files changed, 62 insertions, 13 deletions
diff --git a/jnlib/stringhelp.c b/jnlib/stringhelp.c index 9df852754..4e2768251 100644 --- a/jnlib/stringhelp.c +++ b/jnlib/stringhelp.c @@ -2,22 +2,22 @@ * Copyright (C) 1998, 1999, 2000, 2001, 2003, 2004, 2005, * 2006 Free Software Foundation, Inc. * - * This file is part of GnuPG. + * This file is part of JNLIB. * - * GnuPG 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 of the License, or - * (at your option) any later version. + * JNLIB 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. * - * GnuPG 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. + * JNLIB 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 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. + * You should have received a copy of the GNU Lesser 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. */ #include <config.h> @@ -707,6 +707,55 @@ stpcpy(char *a,const char *b) } #endif +#ifndef HAVE_STRSEP +/* Code taken from glibc-2.2.1/sysdeps/generic/strsep.c. */ +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 /*HAVE_STRSEP*/ + + #ifndef HAVE_STRLWR char * strlwr(char *s) |