# which have makefiles with distribution information.
# - src (libvlc) is nedeed by modules, mozilla and bindings
# - libs/* are needed by modules
-BASE_SUBDIRS = po src bin modules share doc test
+BASE_SUBDIRS = po compat src bin modules share doc test
EXTRA_SUBDIRS = m4 extras/package/ipkg \
libs/loader libs/srtp libs/unzip \
projects/mozilla projects/activex
DIST_SUBDIRS = $(BASE_SUBDIRS) $(EXTRA_SUBDIRS)
-SUBDIRS = po src
+SUBDIRS = po compat src
if LOADER
SUBDIRS += libs/loader
endif
--- /dev/null
+noinst_LTLIBRARIES = libcompat.la
+libcompat_la_SOURCES =
+libcompat_la_LIBADD = $(LTLIBOBJS)
+libcompat_la_LDFLAGS = -no-undefined
--- /dev/null
+/*****************************************************************************
+ * asprintf.c: asprintf() replacement
+ *****************************************************************************
+ * Copyright © 1998-2008 the VideoLAN project
+ *
+ * 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 of the License, 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.
+ *****************************************************************************/
+
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+
+#include <stdio.h>
+#include <stdarg.h>
+
+int asprintf (char **strp, const char *fmt, ...)
+{
+ va_list ap;
+ int ret;
+
+ va_start (ap, fmt);
+ ret = vasprintf (strp, fmt, ap);
+ va_end (ap);
+ return ret;
+}
--- /dev/null
+/*****************************************************************************
+ * atof.c: atof replacement
+ *****************************************************************************
+ * Copyright © 1998-2008 the VideoLAN project
+ *
+ * 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 of the License, 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.
+ *****************************************************************************/
+
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+
+#include <stdlib.h>
+
+double atof (const char *str)
+{
+ return strtod (str, NULL);
+}
--- /dev/null
+/*****************************************************************************
+ * atoll.c: atoll replacement
+ *****************************************************************************
+ * Copyright © 1998-2008 the VideoLAN project
+ *
+ * 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 of the License, 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.
+ *****************************************************************************/
+
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+
+#include <stdlib.h>
+
+long long atoll (const char *str)
+{
+ return strtoll (str, NULL, 10);
+}
--- /dev/null
+/*****************************************************************************
+ * lldiv.c: lldiv replacement
+ *****************************************************************************
+ * Copyright © 1998-2008 the VideoLAN project
+ *
+ * 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 of the License, 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.
+ *****************************************************************************/
+
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+
+lldiv_t lldiv (long long num, long long denom)
+{
+ lldiv_t d = { num / denom, num % demon, };
+ return d;
+}
--- /dev/null
+/*****************************************************************************
+ * strdup.c: strdup replacement
+ *****************************************************************************
+ * Copyright © 1998-2008 the VideoLAN project
+ *
+ * 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 of the License, 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.
+ *****************************************************************************/
+
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+
+#include <string.h>
+#include <stdlib.h>
+
+char *strdup (const char *str)
+{
+ size_t len = strlen (str) + 1;
+ char *res = malloc (len);
+ if (res)
+ memcpy (res, str, len);
+ return res;
+}
--- /dev/null
+/*****************************************************************************
+ * strlcpy.c: BSD strlcpy replacement
+ *****************************************************************************
+ * Copyright © 2006 Rémi Denis-Courmont
+ *
+ * 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 of the License, 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.
+ *****************************************************************************/
+
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+
+#include <stddef.h>
+
+/**
+ * Copy a string to a sized buffer. The result is always nul-terminated
+ * (contrary to strncpy()).
+ *
+ * @param dest destination buffer
+ * @param src string to be copied
+ * @param len maximum number of characters to be copied plus one for the
+ * terminating nul.
+ *
+ * @return strlen(src)
+ */
+size_t strlcpy (char *tgt, const char *src, size_t bufsize)
+{
+ size_t length;
+
+ for (length = 1; (length < bufsize) && *src; length++)
+ *tgt++ = *src++;
+
+ if (bufsize)
+ *tgt = '\0';
+
+ while (*src++)
+ length++;
+
+ return length - 1;
+}
--- /dev/null
+/*****************************************************************************
+ * strndup.c: strndup replacement
+ *****************************************************************************
+ * Copyright © 1998-2008 the VideoLAN project
+ *
+ * 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 of the License, 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.
+ *****************************************************************************/
+
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+
+#include <string.h>
+#include <stdlib.h>
+
+char *strndup (const char *str, size_t max)
+{
+ size_t len = strnlen (str, max);
+ char *res = malloc (len + 1);
+ if (res)
+ {
+ memcpy (res, str, len);
+ res[len] = '\0';
+ }
+ return res;
+}
--- /dev/null
+/*****************************************************************************
+ * strnlen.c: strnlen replacement
+ *****************************************************************************
+ * Copyright © 1998-2008 the VideoLAN project
+ *
+ * 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 of the License, 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.
+ *****************************************************************************/
+
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+
+#include <string.h>
+
+size_t strnlen (const char *str, size_t max)
+{
+ const char *end = memchr (str, 0, max);
+ return end ? (size_t)(end - str) : max;
+}
--- /dev/null
+/*****************************************************************************
+ * strsep.c: BSD strsep replacement
+ *****************************************************************************
+ * Copyright © 1998-2008 the VideoLAN project
+ *
+ * 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 of the License, 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.
+ *****************************************************************************/
+
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+
+#include <string.h>
+
+char *strsep( char **ppsz_string, const char *psz_delimiters )
+{
+ char *psz_string = *ppsz_string;
+ if( !psz_string )
+ return NULL;
+
+ char *p = strpbrk( psz_string, psz_delimiters );
+ if( !p )
+ {
+ *ppsz_string = NULL;
+ return psz_string;
+ }
+ *p++ = '\0';
+
+ *ppsz_string = p;
+ return psz_string;
+}
--- /dev/null
+/*****************************************************************************
+ * strtof.c: strtof replacement
+ *****************************************************************************
+ * Copyright © 1998-2008 the VideoLAN project
+ *
+ * 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 of the License, 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.
+ *****************************************************************************/
+
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+
+#include <stdlib.h>
+
+float strtof (const char *str, char **end)
+{
+ return strtod (str, end);
+}
--- /dev/null
+/*****************************************************************************
+ * strtoll.c: strtoll replacement
+ *****************************************************************************
+ * Copyright © 1998-2008 the VideoLAN project
+ *
+ * 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 of the License, 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.
+ *****************************************************************************/
+
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+
+#include <stdlib.h>
+#include <string.h>
+
+long long int strtof( const char *nptr, char **endptr, int base )
+{
+ long long i_value = 0;
+ int sign = 1, newbase = base ? base : 10;
+
+ nptr += strspn( nptr, "\t " );
+ if( *nptr == '-' )
+ {
+ sign = -1;
+ nptr++;
+ }
+
+ /* Try to detect base */
+ if( *nptr == '0' )
+ {
+ newbase = 8;
+ nptr++;
+
+ if( *nptr == 'x' )
+ {
+ newbase = 16;
+ nptr++;
+ }
+ }
+
+ if( base && newbase != base )
+ {
+ if( endptr ) *endptr = (char *)nptr;
+ return i_value;
+ }
+
+ switch( newbase )
+ {
+ case 10:
+ while( *nptr >= '0' && *nptr <= '9' )
+ {
+ i_value *= 10;
+ i_value += ( *nptr++ - '0' );
+ }
+ if( endptr ) *endptr = (char *)nptr;
+ break;
+
+ case 16:
+ while( (*nptr >= '0' && *nptr <= '9') ||
+ (*nptr >= 'a' && *nptr <= 'f') ||
+ (*nptr >= 'A' && *nptr <= 'F') )
+ {
+ int i_valc = 0;
+ if(*nptr >= '0' && *nptr <= '9') i_valc = *nptr - '0';
+ else if(*nptr >= 'a' && *nptr <= 'f') i_valc = *nptr - 'a' +10;
+ else if(*nptr >= 'A' && *nptr <= 'F') i_valc = *nptr - 'A' +10;
+ i_value *= 16;
+ i_value += i_valc;
+ nptr++;
+ }
+ if( endptr ) *endptr = (char *)nptr;
+ break;
+
+ default:
+ i_value = strtol( nptr, endptr, newbase );
+ break;
+ }
+
+ return i_value * sign;
+}
--- /dev/null
+/*****************************************************************************
+ * vasprintf.c: vasprintf replacement
+ *****************************************************************************
+ * Copyright © 1998-2008 the VideoLAN project
+ *
+ * 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 of the License, 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.
+ *****************************************************************************/
+
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <stdarg.h>
+
+int vasprintf (char **strp, const char *fmt, va_list ap)
+{
+ ssize_t len = vsnprintf (NULL, 0, fmt, ap) + 1;
+ char *res = malloc (len);
+ if (res == NULL)
+ return -1;
+ *strp = res;
+ return vsnprintf (res, len, fmt, ap);
+}
AC_CONFIG_SRCDIR(src/libvlc.c)
AC_CONFIG_AUX_DIR(autotools)
AC_CONFIG_MACRO_DIR(m4)
+AC_CONFIG_LIBOBJ_DIR(compat)
AC_CANONICAL_BUILD
AC_CANONICAL_HOST
need_libc=false
dnl Check for usual libc functions
-AC_CHECK_FUNCS([gettimeofday strtod strtol strtof strtoll strtoull strsep isatty vasprintf asprintf swab sigrelse getpwuid_r memalign posix_memalign if_nametoindex atoll getenv putenv setenv gmtime_r ctime_r localtime_r lrintf daemon fork bsearch lstat strlcpy strdup strndup strnlen atof lldiv posix_fadvise posix_madvise uselocale])
+AC_CHECK_FUNCS([gettimeofday isatty swab sigrelse getpwuid_r memalign posix_memalign if_nametoindex getenv putenv setenv gmtime_r ctime_r localtime_r lrintf daemon fork bsearch lstat posix_fadvise posix_madvise uselocale])
AC_CHECK_FUNCS(strcasecmp,,[AC_CHECK_FUNCS(stricmp)])
AC_CHECK_FUNCS(strncasecmp,,[AC_CHECK_FUNCS(strnicmp)])
AC_CHECK_FUNCS(strcasestr,,[AC_CHECK_FUNCS(stristr)])
AC_FUNC_ALLOCA
AC_CHECK_FUNCS(fcntl)
+AC_REPLACE_FUNCS([asprintf atof atoll lldiv strdup strlcpy strndup strnlen strsep strtof strtoll vasprintf])
dnl Check for Linux system calls
AC_CHECK_FUNCS([vmsplice])
share/Makefile
share/vlc_win32_rc.rc
share/libvlc_win32_rc.rc
+ compat/Makefile
src/Makefile
src/test/Makefile
bin/Makefile
#define VLC_UNUSED(x) (void)(x)
/* Stuff defined in src/extras/libc.c */
-VLC_EXPORT( size_t, vlc_strlcpy, ( char *, const char *, size_t ) );
-VLC_EXPORT( long long, vlc_strtoll, ( const char *nptr, char **endptr, int base ) LIBVLC_USED );
-
VLC_EXPORT( char *, vlc_strcasestr, ( const char *s1, const char *s2 ) LIBVLC_USED );
#if defined(WIN32) || defined(UNDER_CE)
#endif
#ifndef HAVE_STRDUP
-# include <string.h>
-# include <stdlib.h>
-static inline char *strdup (const char *str)
-{
- size_t len = strlen (str) + 1;
- char *res = (char *)malloc (len);
- if (res) memcpy (res, str, len);
- return res;
-}
+char *strdup (const char *);
#endif
#ifndef HAVE_VASPRINTF
-# include <stdio.h>
-# include <stdlib.h>
# include <stdarg.h>
-static inline int vasprintf (char **strp, const char *fmt, va_list ap)
-{
- int len = vsnprintf (NULL, 0, fmt, ap) + 1;
- char *res = (char *)malloc (len);
- if (res == NULL)
- return -1;
- *strp = res;
- return vsnprintf (res, len, fmt, ap);
-}
+int vasprintf (char **, const char *, va_list);
#endif
#ifndef HAVE_ASPRINTF
-# include <stdio.h>
-# include <stdarg.h>
-static inline int asprintf (char **strp, const char *fmt, ...)
-{
- va_list ap;
- int ret;
- va_start (ap, fmt);
- ret = vasprintf (strp, fmt, ap);
- va_end (ap);
- return ret;
-}
+int asprintf (char **, const char *, ...);
#endif
#ifndef HAVE_STRNLEN
-# include <string.h>
-static inline size_t strnlen (const char *str, size_t max)
-{
- const char *end = (const char *) memchr (str, 0, max);
- return end ? (size_t)(end - str) : max;
-}
+# include <stddef.h>
+size_t strnlen (const char *, size_t);
#endif
#ifndef HAVE_STRNDUP
-# include <string.h>
-# include <stdlib.h>
-static inline char *strndup (const char *str, size_t max)
-{
- size_t len = strnlen (str, max);
- char *res = (char *) malloc (len + 1);
- if (res)
- {
- memcpy (res, str, len);
- res[len] = '\0';
- }
- return res;
-}
+# include <stddef.h>
+char *strndup (const char *, size_t);
#endif
#ifndef HAVE_STRLCPY
-# define strlcpy vlc_strlcpy
+# include <stddef.h>
+size_t strlcpy (char *, const char *, size_t);
#endif
#ifndef HAVE_STRTOF
-# define strtof( a, b ) ((float)strtod (a, b))
+float strtof (const char *, char **);
#endif
#ifndef HAVE_ATOF
-# define atof( str ) (strtod ((str), (char **)NULL, 10))
+double atof (const char *);
#endif
#ifndef HAVE_STRTOLL
-# define strtoll vlc_strtoll
+long long int strtoll (const char *, char **, int);
#endif
#ifndef HAVE_STRSEP
-static inline char *strsep( char **ppsz_string, const char *psz_delimiters )
-{
- char *psz_string = *ppsz_string;
- if( !psz_string )
- return NULL;
-
- char *p = strpbrk( psz_string, psz_delimiters );
- if( !p )
- {
- *ppsz_string = NULL;
- return psz_string;
- }
- *p++ = '\0';
-
- *ppsz_string = p;
- return psz_string;
-}
+char *strsep (char **, const char *);
#endif
#ifndef HAVE_ATOLL
-# define atoll( str ) (strtoll ((str), (char **)NULL, 10))
+long long atoll (const char *);
#endif
#ifndef HAVE_LLDIV
long long rem; /* Remainder. */
} lldiv_t;
-static inline lldiv_t lldiv (long long numer, long long denom)
-{
- lldiv_t d = { .quot = numer / denom, .rem = numer % denom };
- return d;
-}
+lldiv_t lldiv (long long, long long);
#endif
#ifndef HAVE_GETENV
-shrext $(LIBEXT) \
-no-undefined \
`$(VLC_CONFIG) --ldflags plugin $@`
-AM_LIBADD = `$(VLC_CONFIG) -libs plugin $@` $(LTLIBVLCCORE)
+AM_LIBADD = `$(VLC_CONFIG) -libs plugin $@` \
+ $(LTLIBVLCCORE) $(top_builddir)/compat/libcompat.la
include $(srcdir)/Modules.am
-DLIBDIR=\"$(libdir)\" \
-DPLUGIN_PATH=\"$(vlclibdir)\"
libvlccore_la_LDFLAGS = `$(VLC_CONFIG) --ldflags libvlc` $(AM_LDFLAGS) \
+ -no-undefined \
-export-symbols $(srcdir)/libvlccore.sym \
-version-info 2:0:0
-libvlccore_la_LIBADD = `$(VLC_CONFIG) -libs libvlc` $(AM_LIBADD) $(LTLIBINTL)
+libvlccore_la_LIBADD = `$(VLC_CONFIG) -libs libvlc` $(AM_LIBADD) \
+ $(LTLIBINTL) ../compat/libcompat.la
libvlccore_la_DEPENDENCIES = libvlccore.sym
if HAVE_WIN32
libvlccore_la_DEPENDENCIES += libvlc_win32_rc.$(OBJEXT)
#endif
}
-/*****************************************************************************
- * strtoll: convert a string to a 64 bits int.
- *****************************************************************************/
-long long vlc_strtoll( const char *nptr, char **endptr, int base )
-{
-#if defined( HAVE_STRTOLL )
- return strtoll( nptr, endptr, base );
-#else
- long long i_value = 0;
- int sign = 1, newbase = base ? base : 10;
-
- while( isspace(*nptr) ) nptr++;
-
- if( *nptr == '-' )
- {
- sign = -1;
- nptr++;
- }
-
- /* Try to detect base */
- if( *nptr == '0' )
- {
- newbase = 8;
- nptr++;
-
- if( *nptr == 'x' )
- {
- newbase = 16;
- nptr++;
- }
- }
-
- if( base && newbase != base )
- {
- if( endptr ) *endptr = (char *)nptr;
- return i_value;
- }
-
- switch( newbase )
- {
- case 10:
- while( *nptr >= '0' && *nptr <= '9' )
- {
- i_value *= 10;
- i_value += ( *nptr++ - '0' );
- }
- if( endptr ) *endptr = (char *)nptr;
- break;
-
- case 16:
- while( (*nptr >= '0' && *nptr <= '9') ||
- (*nptr >= 'a' && *nptr <= 'f') ||
- (*nptr >= 'A' && *nptr <= 'F') )
- {
- int i_valc = 0;
- if(*nptr >= '0' && *nptr <= '9') i_valc = *nptr - '0';
- else if(*nptr >= 'a' && *nptr <= 'f') i_valc = *nptr - 'a' +10;
- else if(*nptr >= 'A' && *nptr <= 'F') i_valc = *nptr - 'A' +10;
- i_value *= 16;
- i_value += i_valc;
- nptr++;
- }
- if( endptr ) *endptr = (char *)nptr;
- break;
-
- default:
- i_value = strtol( nptr, endptr, newbase );
- break;
- }
-
- return i_value * sign;
-#endif
-}
-
-/**
- * Copy a string to a sized buffer. The result is always nul-terminated
- * (contrary to strncpy()).
- *
- * @param dest destination buffer
- * @param src string to be copied
- * @param len maximum number of characters to be copied plus one for the
- * terminating nul.
- *
- * @return strlen(src)
- */
-extern size_t vlc_strlcpy (char *tgt, const char *src, size_t bufsize)
-{
-#ifdef HAVE_STRLCPY
- return strlcpy (tgt, src, bufsize);
-#else
- size_t length;
-
- for (length = 1; (length < bufsize) && *src; length++)
- *tgt++ = *src++;
-
- if (bufsize)
- *tgt = '\0';
-
- while (*src++)
- length++;
-
- return length - 1;
-#endif
-}
-
/*****************************************************************************
* vlc_*dir_wrapper: wrapper under Windows to return the list of drive letters
* when called with an empty argument or just '\'
vlc_sd_Stop
vlc_sendmsg
vlc_strcasestr
-vlc_strlcpy
-vlc_strtoll
vlc_testcancel
vlc_thread_create
__vlc_thread_join