Patch for s3fs-r177

Ecosystem Tool Source: 
--- s3fs/s3fs.cpp   2008-08-13 01:01:47.000000000 +0200
+++ ../s3fs/s3fs.cpp    2009-05-26 16:18:19.000000000 +0200
@@ -319,6 +319,7 @@
 static string AWSSecretAccessKey;
 static string host = "http://s3.amazonaws.com";
 static mode_t root_mode = 0;
+static string service_path = "/";

 // if .size()==0 then local file cache is disabled
 static string use_cache;
@@ -506,7 +507,7 @@
 int
 get_headers(const char* path, headers_t& meta) {

-   string resource(urlEncode("/"+bucket + path));
+   string resource(urlEncode(service_path + bucket + path));
    string url(host + resource);

    auto_curl curl;
@@ -549,7 +550,7 @@
  */
 int
 get_local_fd(const char* path) {
-   string resource(urlEncode("/"+bucket + path));
+   string resource(urlEncode(service_path + bucket + path));
    string url(host + resource);

    string baseName = mybasename(path);
@@ -653,7 +654,7 @@
  */
 static int
 put_headers(const char* path, headers_t meta) {
-  string resource = urlEncode("/"+bucket + path);
+  string resource = urlEncode(service_path + bucket + path);
   string url = host + resource;

   auto_curl curl;
@@ -708,7 +709,7 @@
  */
 static int
 put_local_fd(const char* path, headers_t meta, int fd) {
-   string resource = urlEncode("/"+bucket + path);
+   string resource = urlEncode(service_path + bucket + path);
    string url = host + resource;

    struct stat st;
@@ -784,7 +785,7 @@
        }
    }

-   string resource = urlEncode("/"+bucket + path);
+   string resource = urlEncode(service_path +bucket + path);
    string url = host + resource;

    auto_curl curl;
@@ -894,7 +895,7 @@
    // If pathname already exists, or is a symbolic link, this call fails with an EEXIST error.
    cout << "mknod[path="<< path << "][mode=" << mode << "]" << endl;

-   string resource = urlEncode("/"+bucket + path);
+   string resource = urlEncode(service_path + bucket + path);
    string url = host + resource;

    auto_curl curl;
@@ -927,7 +928,7 @@
 s3fs_mkdir(const char *path, mode_t mode) {
    cout << "mkdir[path=" << path << "][mode=" << mode << "]" << endl;

-   string resource = urlEncode("/"+bucket + path);
+   string resource = urlEncode(service_path + bucket + path);
    string url = host + resource;

    auto_curl curl;
@@ -960,7 +961,7 @@
 s3fs_unlink(const char *path) {
    cout << "unlink[path=" << path << "]" << endl;

-   string resource = urlEncode("/"+bucket + path);
+   string resource = urlEncode(service_path + bucket + path);
    string url = host + resource;

    auto_curl curl;
@@ -984,7 +985,7 @@
 s3fs_rmdir(const char *path) {
    cout << "unlink[path=" << path << "]" << endl;

-   string resource = urlEncode("/"+bucket + path);
+   string resource = urlEncode(service_path + bucket + path);
    string url = host + resource;

    auto_curl curl;
@@ -1233,7 +1234,7 @@

    while (IsTruncated == "true") {
        string responseText;
-       string resource = urlEncode("/"+bucket); // this is what gets signed
+       string resource = urlEncode(service_path + bucket); // this is what gets signed
        string query = "delimiter=/&prefix=";

        if (strcmp(path, "/") != 0)
@@ -1309,7 +1310,7 @@

                                CURL* curl_handle = alloc_curl_handle();

-                               string resource = urlEncode("/"+bucket + "/" + Key);
+                               string resource = urlEncode(service_path + bucket + "/" + Key);
                                string url = host + resource;

                                stuff_t stuff;
@@ -1562,6 +1563,14 @@
            use_cache = strchr(arg, '=') + 1;
            return 0;
        }
+       if (strstr(arg, "host=") != 0) {
+           host = strchr(arg, '=') + 1;
+           return 0;
+       }
+       if (strstr(arg, "servicepath=") != 0) {
+           service_path = strchr(arg, '=') + 1;
+           return 0;
+       }
     if (strstr(arg, "connect_timeout=") != 0) {
       connect_timeout = strtol(strchr(arg, '=') + 1, 0, 10);
       return 0;

Share This Page

Share this Page on Facebook Share this Page on Twitter Email a Friend