chiark / gitweb /
udev: really exclude device-mapper from block device ownership event locking
[elogind.git] / src / readahead / sd-readahead.c
index c5cfe6710732c900a459510fd937aefca26ec44e..675d82cdd18bf9c87dc64006c64ca77e2c5ffa77 100644 (file)
@@ -25,7 +25,7 @@
 ***/
 
 #ifndef _GNU_SOURCE
-#define _GNU_SOURCE
+#  define _GNU_SOURCE
 #endif
 
 #include <unistd.h>
 
 #include "sd-readahead.h"
 
+#if (__GNUC__ >= 4)
+#  ifdef SD_EXPORT_SYMBOLS
+/* Export symbols */
+#    define _sd_export_ __attribute__ ((visibility("default")))
+#  else
+/* Don't export the symbols */
+#    define _sd_export_ __attribute__ ((visibility("hidden")))
+#  endif
+#else
+#  define _sd_export_
+#endif
+
 static int touch(const char *path) {
 
 #if !defined(DISABLE_SYSTEMD) && defined(__linux__)
@@ -45,14 +57,15 @@ static int touch(const char *path) {
         mkdir("/run/systemd", 0755);
         mkdir("/run/systemd/readahead", 0755);
 
-        if ((fd = open(path, O_WRONLY|O_CREAT|O_CLOEXEC|O_NOCTTY, 0666)) < 0)
+        fd = open(path, O_WRONLY|O_CREAT|O_CLOEXEC|O_NOCTTY, 0666);
+        if (fd < 0)
                 return -errno;
 
         for (;;) {
                 if (close(fd) >= 0)
                         break;
 
-                if (errno != -EINTR)
+                if (errno != EINTR)
                         return -errno;
         }
 
@@ -60,7 +73,7 @@ static int touch(const char *path) {
         return 0;
 }
 
-int sd_readahead(const char *action) {
+_sd_export_ int sd_readahead(const char *action) {
 
         if (!action)
                 return -EINVAL;