--- 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;