diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/Makefile.am | 2 | ||||
-rw-r--r-- | lib/asprintf.c | 6 | ||||
-rw-r--r-- | lib/dirent_msvc.c | 2 | ||||
-rw-r--r-- | lib/os_internal.h | 18 | ||||
-rw-r--r-- | lib/os_types.h | 4 | ||||
-rw-r--r-- | lib/strcasestr.c | 60 | ||||
-rw-r--r-- | lib/strsep.c | 2 | ||||
-rw-r--r-- | lib/strtok_r.c | 8 | ||||
-rw-r--r-- | lib/timegm.c | 4 |
9 files changed, 94 insertions, 12 deletions
diff --git a/lib/Makefile.am b/lib/Makefile.am index 36b695bc8..29084e996 100644 --- a/lib/Makefile.am +++ b/lib/Makefile.am @@ -6,5 +6,5 @@ noinst_LTLIBRARIES = libxineposix.la noinst_HEADERS = os_internal.h xineinclude_HEADERS = os_types.h -libxineposix_la_SOURCES = +libxineposix_la_SOURCES = libxineposix_la_LIBADD = @LTLIBOBJS@ diff --git a/lib/asprintf.c b/lib/asprintf.c index 1027e82dd..5359e51f3 100644 --- a/lib/asprintf.c +++ b/lib/asprintf.c @@ -29,7 +29,7 @@ int xine_private_vasprintf (char **buffer, const char *format, va_list ap) { char *buf = NULL; int size = 128; - + for (;;) { int ret; @@ -41,11 +41,11 @@ int xine_private_vasprintf (char **buffer, const char *format, va_list ap) return -1; } buf = newbuf; - + va_copy (cp, ap); ret = vsnprintf (buf, size, format, cp); va_end (cp); - + if (ret >= 0 && ret < size) { *buffer = realloc (buf, ret + 1); diff --git a/lib/dirent_msvc.c b/lib/dirent_msvc.c index 19ef88a66..8a3f895ea 100644 --- a/lib/dirent_msvc.c +++ b/lib/dirent_msvc.c @@ -11,7 +11,7 @@ that this copyright and permissions notice appear in all copies and derivatives, and that no charge may be made for the software and its documentation except to cover cost of distribution. - + This software is supplied "as is" without express or implied warranty. But that said, if there are any problems please get in touch. diff --git a/lib/os_internal.h b/lib/os_internal.h index 11601bbdf..fe406a747 100644 --- a/lib/os_internal.h +++ b/lib/os_internal.h @@ -4,6 +4,10 @@ #include <stddef.h> #include <stdarg.h> +#ifdef HAVE_SYS_PARAM_H +# include <sys/param.h> +#endif + #ifdef HOST_OS_DARWIN /* Darwin (Mac OS X) needs __STDC_LIBRARY_SUPPORTED__ for SCNx64 and * SCNxMAX macros */ @@ -32,6 +36,13 @@ # define XINE_DIRECTORY_SEPARATOR_CHAR '/' #endif +/* replacement of min/max macros */ +#ifndef HAVE_MAX_MACRO +#define MAX(a,b) (((a)>(b))?(a):(b)) +#endif +#ifndef HAVE_MIN_MACRO +#define MIN(a,b) (((a)<(b))?(a):(b)) +#endif /* replacement of strndup */ #ifndef HAVE_STRNDUP @@ -61,6 +72,13 @@ const char *xine_private_hstrerror(int err); int xine_private_setenv(const char *name, const char *value); #endif +/* replacement of strcasestr */ +#ifndef HAVE_STRCASESTR +#define HAVE_STRCASESTR +#define strcasestr(HAYSTACK, NEEDLE) xine_private_strcasestr((HAYSTACK), (NEEDLE)) +char *xine_private_strcasestr(const char *haystack, const char *needle); +#endif + /* replacement of strtok_r */ #ifndef HAVE_STRTOK_R #define HAVE_STRTOK_R diff --git a/lib/os_types.h b/lib/os_types.h index 75ce9b8a5..aa6eddb00 100644 --- a/lib/os_types.h +++ b/lib/os_types.h @@ -17,7 +17,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA * - * Platform dependent types needed by public xine.h. + * Platform dependent types needed by public xine.h. * Types not needed by xine.h are specified in os_internal.h. * * Heavily based on os_types.h from OggVorbis (BSD License), @@ -97,7 +97,7 @@ #else - /* + /* * CygWin: _WIN32 & __GNUC__ * BeOS: __BEOS__ * Linux, Solaris, Mac and others diff --git a/lib/strcasestr.c b/lib/strcasestr.c new file mode 100644 index 000000000..0793319aa --- /dev/null +++ b/lib/strcasestr.c @@ -0,0 +1,60 @@ +/*- + * Copyright (c) 1990, 1993 + * The Regents of the University of California. All rights reserved. + * + * This code is derived from software contributed to Berkeley by + * Chris Torek. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include "config.h" + +#include <assert.h> +#include <ctype.h> +#include <string.h> + +/* + * Find the first occurrence of find in s, ignore case. + */ +char * +xine_private_strcasestr(const char *s, const char *find) +{ + char c, sc; + size_t len; + + if ((c = *find++) != 0) { + c = tolower((unsigned char)c); + len = strlen(find); + do { + do { + if ((sc = *s++) == 0) + return (NULL); + } while ((char)tolower((unsigned char)sc) != c); + } while (strncasecmp(s, find, len) != 0); + s--; + } + return (char *)s; +} diff --git a/lib/strsep.c b/lib/strsep.c index 3170e4867..fbd5c041e 100644 --- a/lib/strsep.c +++ b/lib/strsep.c @@ -35,7 +35,7 @@ /* * Get next token from string *stringp, where tokens are possibly-empty - * strings separated by characters from delim. + * strings separated by characters from delim. * * Writes NULs into the string at *stringp to end tokens. * delim need not remain constant from call to call. diff --git a/lib/strtok_r.c b/lib/strtok_r.c index cead029a2..8a5284a42 100644 --- a/lib/strtok_r.c +++ b/lib/strtok_r.c @@ -19,7 +19,7 @@ char *xine_private_strtok_r(char *s, const char *delim, char **ptrptr) { else s = *ptrptr; /* end of searching */ - if (!s || s == '\0') return NULL; + if (!s || !*s) return NULL; /* cut the initial garbage */ cutlen = strspn(s, delim); @@ -32,12 +32,12 @@ char *xine_private_strtok_r(char *s, const char *delim, char **ptrptr) { } next = s + toklen; + /* prepare next call */ + *ptrptr = *next ? next + 1 : NULL; + /* cut current token */ *next = '\0'; - /* prepare next call */ - *ptrptr = next + 1; - /* return the token */ return s; } diff --git a/lib/timegm.c b/lib/timegm.c index 588131afb..e86e66370 100644 --- a/lib/timegm.c +++ b/lib/timegm.c @@ -5,15 +5,19 @@ time_t xine_private_timegm(struct tm *tm) { time_t ret; +#if defined(HAVE_TZSET) char *tz; tz = getenv("TZ"); setenv("TZ", "", 1); tzset(); +#endif ret = mktime(tm); +#if defined(HAVE_TZSET) if (tz) setenv("TZ", tz, 1); else unsetenv("TZ"); tzset(); +#endif return ret; } |