summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2014-11-22 01:32:31 +0000
committerDavid Robillard <d@drobilla.net>2014-11-22 01:32:31 +0000
commitee7ad94720483fc24deb108441b65acf8e03f66d (patch)
tree425aa5cd6d007d61b321d1573106fb4f7b175159 /src
parent48e05557b8afac26bcdd0416ef0ab9a18037e529 (diff)
downloadlilv-ee7ad94720483fc24deb108441b65acf8e03f66d.tar.gz
lilv-ee7ad94720483fc24deb108441b65acf8e03f66d.tar.bz2
lilv-ee7ad94720483fc24deb108441b65acf8e03f66d.zip
Windows fixes (thanks John Emmas).
git-svn-id: http://svn.drobilla.net/lad/trunk/lilv@5491 a436a847-0d15-0410-975c-d299462d15a1
Diffstat (limited to 'src')
-rw-r--r--src/plugin.c2
-rw-r--r--src/util.c14
-rw-r--r--src/world.c2
3 files changed, 16 insertions, 2 deletions
diff --git a/src/plugin.c b/src/plugin.c
index 8729314..bf0843b 100644
--- a/src/plugin.c
+++ b/src/plugin.c
@@ -693,7 +693,7 @@ lilv_plugin_get_latency_port_index(const LilvPlugin* p)
} else if (des_port) {
return des_port->index;
} else {
- return UINT32_MAX;
+ return (uint32_t)-1;
}
}
diff --git a/src/util.c b/src/util.c
index b38e58a..76c5a9d 100644
--- a/src/util.c
+++ b/src/util.c
@@ -35,6 +35,17 @@
# include <io.h>
# define F_OK 0
# define mkdir(path, flags) _mkdir(path)
+# if (defined(_MSC_VER) && (_MSC_VER < 1500))
+/** Implement 'CreateSymbolicLink()' for MSVC 8 or earlier */
+BOOLEAN WINAPI
+CreateSymbolicLink(LPCTSTR linkpath, LPCTSTR targetpath, DWORD flags)
+{
+ typedef BOOLEAN (WINAPI* PFUNC)(LPCTSTR, LPCTSTR, DWORD);
+
+ PFUNC pfn = (PFUNC)GetProcAddress(GetModuleHandle(TEXT("kernel32.dll")), "CreateSymbolicLinkA");
+ return pfn ? pfn(linkpath, targetpath, flags) : 0;
+}
+# endif /* _MSC_VER < 1500 */
#else
# include <dirent.h>
# include <unistd.h>
@@ -429,6 +440,9 @@ lilv_symlink(const char* oldpath, const char* newpath)
if (strcmp(oldpath, newpath)) {
#ifdef _WIN32
ret = !CreateSymbolicLink(newpath, oldpath, 0);
+ if (ret) {
+ ret = !CreateHardLink(newpath, oldpath, 0);
+ }
#else
ret = symlink(oldpath, newpath);
#endif
diff --git a/src/world.c b/src/world.c
index bd926d9..10382c7 100644
--- a/src/world.c
+++ b/src/world.c
@@ -652,7 +652,7 @@ lilv_world_unload_file(LilvWorld* world, LilvNode* file)
{
ZixTreeIter* iter;
if (!zix_tree_find((ZixTree*)world->loaded_files, file, &iter)) {
- zix_tree_remove(world->loaded_files, iter);
+ zix_tree_remove((ZixTree*)world->loaded_files, iter);
return 0;
}
return 1;