]> git.sesse.net Git - vlc/blobdiff - src/misc/linux_specific.c
secstotimestr: use div()
[vlc] / src / misc / linux_specific.c
index 37bdff5f2f2dab994a73efce3cb922d27246a023..57b0805b77f702fcac59a460b02d3b281ce6b659 100644 (file)
@@ -24,7 +24,6 @@
 
 #include <stdio.h>
 #include <string.h>
-#include <sys/stat.h>
 
 #include <vlc_common.h>
 #include "../libvlc.h"
@@ -32,6 +31,7 @@
 #if 0
 #include <assert.h>
 #include <pthread.h>
+#include <limits.h>
 
 static void set_libvlc_path (void)
 {
@@ -46,29 +46,34 @@ static void set_libvlc_path (void)
     if (maps == NULL)
         return;
 
+    char *line = NULL;
+    size_t linelen = 0;
+    uintptr_t needle = (uintptr_t)set_libvlc_path;
+
     for (;;)
     {
-        char buf[5000], *dir, *end;
-
-        if (fgets (buf, sizeof (buf), maps) == NULL)
+        ssize_t len = getline (&line, &linelen, maps);
+        if (len == -1)
             break;
 
-        dir = strchr (buf, '/');
+        void *start, *end;
+        if (sscanf (line, "%p-%p", &start, &end) < 2)
+            continue;
+        if (needle < (uintptr_t)start || (uintptr_t)end <= needle)
+            continue;
+        char *dir = strchr (line, '/');
         if (dir == NULL)
             continue;
-        end = strrchr (dir, '/');
+        char *file = strrchr (line, '/');
         if (end == NULL)
             continue;
-        if (strncmp (end + 1, "libvlc.so.", 10))
-            continue;
-
-        *end = '\0';
+        *file = '\0';
         printf ("libvlc at %s\n", dir);
         if (strlen (dir) < sizeof (libvlc_path))
             strcpy (libvlc_path, dir);
         break;
     }
-
+    free (line);
     fclose (maps);
 }
 #endif
@@ -88,31 +93,13 @@ void system_Init (libvlc_int_t *libvlc, int *argc, const char *argv[])
      * 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",
-               stderr);
-        fputs ("Please update to version 2.8 or newer.\n", stderr);
+        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
     }
-
-# ifdef __i386__
-    /* glibc 2.10, 2.10.1 fail in pthread_cond_wait on 686 */
-    struct stat st;
-    if (strverscmp (glcv, "2.10") >= 0
-     && strverscmp (glcv, "2.10.1") <= 0 /* update version when fixed */
-     && !stat ("/lib/i686/cmov/libpthread.so.0", &st))
-    {
-        fputs ("LibVLC has detected an unusable buggy GNU/libc version.\n",
-               stderr);
-        fputs ("Please remove GNU/libc acceleration for 686.\n", stderr);
-        fflush (stderr);
-#  ifndef DISABLE_BUGGY_GLIBC_CHECK
-        abort ();
-#  endif
-    }
-# endif
 #endif
 
 #if 0