# include "config.h"
#endif
-#if 0
#include <stdio.h>
-#include <assert.h>
-#include <pthread.h>
+#include <string.h>
-#include <vlc/vlc.h>
+#include <vlc_common.h>
#include "../libvlc.h"
+#if 0
+#include <assert.h>
+#include <pthread.h>
+
static void set_libvlc_path (void)
{
static char libvlc_path[PATH_MAX];
assert (strlen (LIBDIR) < sizeof (libvlc_path));
strcpy (libvlc_path, LIBDIR); /* fail safe */
- vlc_global ()->psz_vlcpath = libvlc_path;
+ psz_vlcpath = libvlc_path;
/* Find the path to libvlc (i.e. ourselves) */
FILE *maps = fopen ("/proc/self/maps", "rt");
}
#endif
+#ifdef __GLIBC__
+# include <gnu/libc-version.h>
+# include <stdlib.h>
+#endif
+
void system_Init (libvlc_int_t *libvlc, int *argc, const char *argv[])
{
+#ifdef __GLIBC__
+ const char *glcv = gnu_get_libc_version ();
+
+ /* gettext in glibc 2.5-2.7 is not thread-safe. LibVLC keeps crashing,
+ * especially in sterror_r(). Even if we have NLS disabled, the calling
+ * process might have called setlocale(). */
+ if (strverscmp (glcv, "2.5") >= 0 && strverscmp (glcv, "2.8") < 0)
+ {
+ fputs ("LibVLC has detected an unusable buggy GNU/libc version.\n"
+ "Please update to version 2.8 or newer.\n", stderr);
+ fflush (stderr);
+#ifndef DISABLE_BUGGY_GLIBC_CHECK
+ abort ();
+#endif
+ }
+#endif
+
#if 0
static pthread_once_t once = PTHREAD_ONCE_INIT;
pthread_once (&once, set_libvlc_path);