Code

use neon's native thread safe SSL support
[fusedav.git] / src / fusedav.c
index 11f7ae7796f45160f10a667f948b1f15fdf936c2..a0723b17f8d2259742090eed4c9b8ed7333dda52 100644 (file)
@@ -52,7 +52,6 @@
 #include "statcache.h"
 #include "filecache.h"
 #include "session.h"
-#include "openssl-thread.h"
 #include "fusedav.h"
 
 const ne_propname query_properties[] = {
@@ -228,7 +227,7 @@ static char *strip_trailing_slash(char *fn, int *is_dir) {
     return fn;
 }
 
-static void getdir_propfind_callback(void *userdata, const char *href, const ne_prop_result_set *results) {
+static void getdir_propfind_callback(void *userdata, const ne_uri *u, const ne_prop_result_set *results) {
     struct fill_info *f = userdata;
     struct stat st;
     char fn[PATH_MAX], *t;
@@ -236,7 +235,7 @@ static void getdir_propfind_callback(void *userdata, const char *href, const ne_
 
     assert(f);
 
-    strncpy(fn, href, sizeof(fn));
+    strncpy(fn, u->path, sizeof(fn));
     fn[sizeof(fn)-1] = 0;
     strip_trailing_slash(fn, &is_dir);
 
@@ -318,14 +317,14 @@ static int dav_readdir(
     return 0;
 }
 
-static void getattr_propfind_callback(void *userdata, const char *href, const ne_prop_result_set *results) {
+static void getattr_propfind_callback(void *userdata, const ne_uri *u, const ne_prop_result_set *results) {
     struct stat *st = (struct stat*) userdata;
     char fn[PATH_MAX];
     int is_dir;
 
     assert(st);
 
-    strncpy(fn, href, sizeof(fn));
+    strncpy(fn, u->path, sizeof(fn));
     fn[sizeof(fn)-1] = 0;
     strip_trailing_slash(fn, &is_dir);
     
@@ -791,7 +790,7 @@ static int listxattr_iterator(
     }
 }
 
-static void listxattr_propfind_callback(void *userdata, __unused const char *href, const ne_prop_result_set *results) {
+static void listxattr_propfind_callback(void *userdata, __unused const ne_uri *u, const ne_prop_result_set *results) {
     struct listxattr_info *l = userdata;
     ne_propset_iterate(results, listxattr_iterator, l);
 }
@@ -889,7 +888,7 @@ static int getxattr_iterator(
     return 0;
 }
 
-static void getxattr_propfind_callback(void *userdata, __unused const char *href, const ne_prop_result_set *results) {
+static void getxattr_propfind_callback(void *userdata, __unused const ne_uri *u, const ne_prop_result_set *results) {
     struct getxattr_info *g = userdata;
     ne_propset_iterate(results, getxattr_iterator, g);
 }
@@ -1245,11 +1244,12 @@ static int create_lock(void) {
     if (!(session = session_get(0)))
         return -1;
 
-    if (!(owner = getenv("USER")))
-        if (!(owner = getenv("LOGNAME"))) {
-            snprintf(_owner, sizeof(_owner), "%lu", (unsigned long) getuid());
-            owner = owner;
-        }
+    if (!(owner = username))
+        if (!(owner = getenv("USER")))
+            if (!(owner = getenv("LOGNAME"))) {
+                snprintf(_owner, sizeof(_owner), "%lu", (unsigned long) getuid());
+                owner = owner;
+            }
 
     ne_fill_server_uri(session, &lock->uri);
     
@@ -1385,8 +1385,13 @@ int main(int argc, char *argv[]) {
         goto finish;
     }
 
-    openssl_thread_setup();
-
+    if (!ne_has_support(NE_FEATURE_SSL) ||
+        !ne_has_support(NE_FEATURE_TS_SSL) ||
+        !ne_has_support(NE_FEATURE_LFS)) {
+        fprintf(stderr, "fusedav requires libneon built with SSL, SSL thread safety and LFS enabled.\n");
+        goto finish;
+    }
+        
     mask = umask(0);
     umask(mask);
 
@@ -1507,7 +1512,6 @@ finish:
     file_cache_close_all();
     cache_free();
     session_free();
-    openssl_thread_cleanup();
     
     return ret;
 }