From 5e80e165754064e9942fdf7bd3449a9f4fa047a0 Mon Sep 17 00:00:00 2001
From: David Robillard <d@drobilla.net>
Date: Tue, 10 Jul 2018 19:10:06 +0200
Subject: Fix saving state when broken links are encountered

---
 NEWS       | 3 ++-
 src/util.c | 5 +++++
 wscript    | 6 ++++++
 3 files changed, 13 insertions(+), 1 deletion(-)

diff --git a/NEWS b/NEWS
index 5f3f580..3d0b148 100644
--- a/NEWS
+++ b/NEWS
@@ -1,5 +1,6 @@
 lilv (0.24.3) unstable;
 
+  * Fix saving state when broken links are encountered
   * Don't attempt to load remote or non-Turtle files
   * lv2apply: Use default values when they are not nan
   * lv2bench: Improve support for plugins with sequence ports
@@ -9,7 +10,7 @@ lilv (0.24.3) unstable;
   * Install Python bindings when configured without tests
     (thanks Clement Skau)
 
- -- David Robillard <d@drobilla.net>  Thu, 23 Mar 2017 21:37:42 +0100
+ -- David Robillard <d@drobilla.net>  Tue, 10 Jul 2018 20:14:01 +0200
 
 lilv (0.24.2) stable;
 
diff --git a/src/util.c b/src/util.c
index 9e791b4..4973181 100644
--- a/src/util.c
+++ b/src/util.c
@@ -272,7 +272,12 @@ lilv_dirname(const char* path)
 bool
 lilv_path_exists(const char* path, void* ignored)
 {
+#ifdef HAVE_LSTAT
+	struct stat st;
+	return !lstat(path, &st);
+#else
 	return !access(path, F_OK);
+#endif
 }
 
 char*
diff --git a/wscript b/wscript
index 0ff80f8..cb6a278 100644
--- a/wscript
+++ b/wscript
@@ -108,6 +108,12 @@ def configure(conf):
     if conf.env.DEST_OS == 'darwin' or conf.env.DEST_OS == 'win32':
         rt_lib = []
 
+    autowaf.check_function(conf, 'c', 'lstat',
+                           header_name = ['sys/stat.h'],
+                           defines     = defines,
+                           define_name = 'HAVE_LSTAT',
+                           mandatory   = False)
+
     autowaf.check_function(conf, 'c', 'flock',
                            header_name = 'sys/file.h',
                            defines     = defines,
-- 
cgit v1.2.1