summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorBryan Ischo <bryan@ischo.com>2008-07-22 03:36:29 +0000
committerBryan Ischo <bryan@ischo.com>2008-07-22 03:36:29 +0000
commitd6998ae7a48171ea78d4c60c22818672f36750de (patch)
tree5a9bff44ebf3ad2c7ffded7cff75ac4cff94a6b3 /src
parent8a2f22506a4e3a8f07356aaa3a223428243acda4 (diff)
downloadceph-libs3-d6998ae7a48171ea78d4c60c22818672f36750de.tar.gz
* Minor updates, and complete documentation for libs3.h in progress
Diffstat (limited to 'src')
-rw-r--r--src/acl.c4
-rw-r--r--src/bucket.c17
-rw-r--r--src/error_parser.c7
-rw-r--r--src/general.c51
-rw-r--r--src/object.c13
-rw-r--r--src/request.c5
-rw-r--r--src/request_context.c2
-rw-r--r--src/response_headers_handler.c8
-rw-r--r--src/s3.c8
-rw-r--r--src/service.c9
-rw-r--r--src/simplexml.c6
-rw-r--r--src/testsimplexml.c9
12 files changed, 52 insertions, 87 deletions
diff --git a/src/acl.c b/src/acl.c
index c276c63..f4dbf14 100644
--- a/src/acl.c
+++ b/src/acl.c
@@ -199,8 +199,8 @@ static S3Status generateAclXmlDocument(const char *ownerId,
append("</Grantee><Permission>%s</Permission></Grant>",
((grant->permission == S3PermissionRead) ? "READ" :
(grant->permission == S3PermissionWrite) ? "WRITE" :
- (grant->permission == S3PermissionReadAcp) ? "READ_ACP" :
- (grant->permission == S3PermissionWriteAcp) ? "WRITE_ACP" :
+ (grant->permission == S3PermissionReadACP) ? "READ_ACP" :
+ (grant->permission == S3PermissionWriteACP) ? "WRITE_ACP" :
"FULL_CONTROL"));
}
diff --git a/src/bucket.c b/src/bucket.c
index cca60e0..3473fe8 100644
--- a/src/bucket.c
+++ b/src/bucket.c
@@ -115,13 +115,7 @@ void S3_test_bucket(S3Protocol protocol, S3UriStyle uriStyle,
return;
}
- S3Status status = simplexml_initialize
- (&(tbData->simpleXml), &testBucketXmlCallback, tbData);
- if (status != S3StatusOK) {
- free(tbData);
- (*(handler->completeCallback))(status, 0, callbackData);
- return;
- }
+ simplexml_initialize(&(tbData->simpleXml), &testBucketXmlCallback, tbData);
tbData->responsePropertiesCallback = handler->propertiesCallback;
tbData->responseCompleteCallback = handler->completeCallback;
@@ -686,14 +680,7 @@ void S3_list_bucket(const S3BucketContext *bucketContext, const char *prefix,
return;
}
- S3Status status = simplexml_initialize
- (&(lbData->simpleXml), &listBucketXmlCallback, lbData);
- if (status != S3StatusOK) {
- free(lbData);
- (*(handler->responseHandler.completeCallback))
- (status, 0, callbackData);
- return;
- }
+ simplexml_initialize(&(lbData->simpleXml), &listBucketXmlCallback, lbData);
lbData->responsePropertiesCallback =
handler->responseHandler.propertiesCallback;
diff --git a/src/error_parser.c b/src/error_parser.c
index 825c1df..6281492 100644
--- a/src/error_parser.c
+++ b/src/error_parser.c
@@ -133,11 +133,8 @@ S3Status error_parser_add(ErrorParser *errorParser, char *buffer,
int bufferSize)
{
if (!errorParser->errorXmlParserInitialized) {
- S3Status status = simplexml_initialize
- (&(errorParser->errorXmlParser), &errorXmlCallback, errorParser);
- if (status != S3StatusOK) {
- return status;
- }
+ simplexml_initialize(&(errorParser->errorXmlParser), &errorXmlCallback,
+ errorParser);
errorParser->errorXmlParserInitialized = 1;
}
diff --git a/src/general.c b/src/general.c
index 39e5cd8..f7aa034 100644
--- a/src/general.c
+++ b/src/general.c
@@ -81,6 +81,23 @@ static void dynlock_destroy(struct CRYPTO_dynlock_value *pLock,
}
+static void deinitialize_locks()
+{
+ CRYPTO_set_dynlock_destroy_callback(NULL);
+ CRYPTO_set_dynlock_lock_callback(NULL);
+ CRYPTO_set_dynlock_create_callback(NULL);
+ CRYPTO_set_locking_callback(NULL);
+ CRYPTO_set_id_callback(NULL);
+
+ int count = CRYPTO_num_locks();
+ for (int i = 0; i < count; i++) {
+ (*mutexDestroyCallbackG)(pLocksG[i]);
+ }
+
+ free(pLocksG);
+}
+
+
struct S3Mutex *mutex_create()
{
return (*mutexCreateCallbackG)();
@@ -138,7 +155,7 @@ S3Status S3_initialize(const char *userAgentInfo,
S3Status status = request_api_initialize(userAgentInfo);
if (status != S3StatusOK) {
- S3_deinitialize();
+ deinitialize_locks();
return status;
}
@@ -150,21 +167,9 @@ void S3_deinitialize()
{
request_api_deinitialize();
- CRYPTO_set_dynlock_destroy_callback(NULL);
- CRYPTO_set_dynlock_lock_callback(NULL);
- CRYPTO_set_dynlock_create_callback(NULL);
- CRYPTO_set_locking_callback(NULL);
- CRYPTO_set_id_callback(NULL);
-
- int count = CRYPTO_num_locks();
- for (int i = 0; i < count; i++) {
- (*mutexDestroyCallbackG)(pLocksG[i]);
- }
-
- free(pLocksG);
+ deinitialize_locks();
}
-
const char *S3_get_status_name(S3Status status)
{
switch (status) {
@@ -184,9 +189,7 @@ const char *S3_get_status_name(S3Status status)
handlecase(InvalidBucketNameTooShort);
handlecase(InvalidBucketNameDotQuadNotation);
handlecase(QueryParamsTooLong);
- handlecase(FailedToCreateRequest);
handlecase(FailedToInitializeRequest);
- handlecase(FailedToCreateRequestContext);
handlecase(MetaDataHeadersTooLong);
handlecase(BadMetaData);
handlecase(BadContentType);
@@ -504,10 +507,10 @@ static S3Status convertAclXmlCallback(const char *elementPath,
grant->permission = S3PermissionWrite;
}
else if (!strcmp(caData->permission, "READ_ACP")) {
- grant->permission = S3PermissionReadAcp;
+ grant->permission = S3PermissionReadACP;
}
else if (!strcmp(caData->permission, "WRITE_ACP")) {
- grant->permission = S3PermissionWriteAcp;
+ grant->permission = S3PermissionWriteACP;
}
else if (!strcmp(caData->permission, "FULL_CONTROL")) {
grant->permission = S3PermissionFullControl;
@@ -552,19 +555,13 @@ S3Status S3_convert_acl(char *aclXml, char *ownerId, char *ownerDisplayName,
// Use a simplexml parser
SimpleXml simpleXml;
+ simplexml_initialize(&simpleXml, &convertAclXmlCallback, &data);
- S3Status status;
-
- if (((status = simplexml_initialize
- (&simpleXml, &convertAclXmlCallback, &data)) != S3StatusOK) ||
- ((status = simplexml_add
- (&simpleXml, aclXml, strlen(aclXml))) != S3StatusOK)) {
- return status;
- }
+ S3Status status = simplexml_add(&simpleXml, aclXml, strlen(aclXml));
simplexml_deinitialize(&simpleXml);
- return S3StatusOK;
+ return status;
}
diff --git a/src/object.c b/src/object.c
index 41bd373..3302810 100644
--- a/src/object.c
+++ b/src/object.c
@@ -175,13 +175,7 @@ void S3_copy_object(const S3BucketContext *bucketContext, const char *key,
return;
}
- S3Status status = simplexml_initialize
- (&(data->simpleXml), &copyObjectXmlCallback, data);
- if (status != S3StatusOK) {
- free(data);
- (*(handler->completeCallback))(status, 0, callbackData);
- return;
- }
+ simplexml_initialize(&(data->simpleXml), &copyObjectXmlCallback, data);
data->responsePropertiesCallback = handler->propertiesCallback;
data->responseCompleteCallback = handler->completeCallback;
@@ -202,8 +196,9 @@ void S3_copy_object(const S3BucketContext *bucketContext, const char *key,
HttpRequestTypeCOPY, // httpRequestType
bucketContext->protocol, // protocol
bucketContext->uriStyle, // uriStyle
- destinationBucket, // bucketName
- destinationKey, // key
+ destinationBucket ? destinationBucket :
+ bucketContext->bucketName, // bucketName
+ destinationKey ? destinationKey : key, // key
0, // queryParams
0, // subResource
bucketContext->accessKeyId, // accessKeyId
diff --git a/src/request.c b/src/request.c
index 1ca6122..6cf7050 100644
--- a/src/request.c
+++ b/src/request.c
@@ -279,7 +279,8 @@ static S3Status compose_amz_headers(const RequestParams *params,
const S3NameValue *property = &(properties->metaData[i]);
char headerName[S3_MAX_METADATA_SIZE - sizeof(": v")];
int l = snprintf(headerName, sizeof(headerName),
- "x-amz-meta-%s", property->name);
+ S3_METADATA_HEADER_NAME_PREFIX "%s",
+ property->name);
char *hn = headerName;
header_name_tolower_copy(hn, l);
// Copy in the value
@@ -925,7 +926,7 @@ static S3Status request_get(const RequestParams *params,
// Else there wasn't one available in the request stack, so create one
else {
if (!(request = (Request *) malloc(sizeof(Request)))) {
- return S3StatusFailedToCreateRequest;
+ return S3StatusOutOfMemory;
}
if (!(request->curl = curl_easy_init())) {
free(request);
diff --git a/src/request_context.c b/src/request_context.c
index aced7a7..e482ad4 100644
--- a/src/request_context.c
+++ b/src/request_context.c
@@ -35,7 +35,7 @@ S3Status S3_create_request_context(S3RequestContext **requestContextReturn)
(S3RequestContext *) malloc(sizeof(S3RequestContext));
if (!*requestContextReturn) {
- return S3StatusFailedToCreateRequestContext;
+ return S3StatusOutOfMemory;
}
if (!((*requestContextReturn)->curlm = curl_multi_init())) {
diff --git a/src/response_headers_handler.c b/src/response_headers_handler.c
index 5051123..67ae08f 100644
--- a/src/response_headers_handler.c
+++ b/src/response_headers_handler.c
@@ -147,15 +147,17 @@ void response_headers_handler_add(ResponseHeadersHandler *handler,
string_multibuffer_add(handler->responsePropertyStrings, c,
valuelen, fit);
}
- else if (!strncmp(header, "x-amz-meta-", sizeof("x-amz-meta-") - 1)) {
+ else if (!strncmp(header, S3_METADATA_HEADER_NAME_PREFIX,
+ sizeof(S3_METADATA_HEADER_NAME_PREFIX) - 1)) {
// Make sure there is room for another x-amz-meta header
if (handler->responseProperties.metaDataCount ==
sizeof(handler->responseMetaData)) {
return;
}
// Copy the name in
- char *metaName = &(header[sizeof("x-amz-meta-") - 1]);
- int metaNameLen = (namelen - (sizeof("x-amz-meta-") - 1));
+ char *metaName = &(header[sizeof(S3_METADATA_HEADER_NAME_PREFIX) - 1]);
+ int metaNameLen =
+ (namelen - (sizeof(S3_METADATA_HEADER_NAME_PREFIX) - 1));
char *copiedName =
string_multibuffer_current(handler->responseMetaDataStrings);
string_multibuffer_add(handler->responseMetaDataStrings, metaName,
diff --git a/src/s3.c b/src/s3.c
index 958511a..e58c789 100644
--- a/src/s3.c
+++ b/src/s3.c
@@ -547,7 +547,7 @@ static int convert_simple_acl(char *aclXml, char *ownerId,
SKIP_SPACE(1);
if (!strncmp(aclXml, "READ_ACP", sizeof("READ_ACP") - 1)) {
- grant->permission = S3PermissionReadAcp;
+ grant->permission = S3PermissionReadACP;
aclXml += (sizeof("READ_ACP") - 1);
}
else if (!strncmp(aclXml, "READ", sizeof("READ") - 1)) {
@@ -555,7 +555,7 @@ static int convert_simple_acl(char *aclXml, char *ownerId,
aclXml += (sizeof("READ") - 1);
}
else if (!strncmp(aclXml, "WRITE_ACP", sizeof("WRITE_ACP") - 1)) {
- grant->permission = S3PermissionWriteAcp;
+ grant->permission = S3PermissionWriteACP;
aclXml += (sizeof("WRITE_ACP") - 1);
}
else if (!strncmp(aclXml, "WRITE", sizeof("WRITE") - 1)) {
@@ -2028,10 +2028,10 @@ void get_acl(int argc, char **argv, int optind)
case S3PermissionWrite:
perm = "WRITE";
break;
- case S3PermissionReadAcp:
+ case S3PermissionReadACP:
perm = "READ_ACP";
break;
- case S3PermissionWriteAcp:
+ case S3PermissionWriteACP:
perm = "WRITE_ACP";
break;
default:
diff --git a/src/service.c b/src/service.c
index 1e97d96..d539c75 100644
--- a/src/service.c
+++ b/src/service.c
@@ -139,14 +139,7 @@ void S3_list_service(S3Protocol protocol, const char *accessKeyId,
return;
}
- S3Status status = simplexml_initialize
- (&(data->simpleXml), &xmlCallback, data);
- if (status != S3StatusOK) {
- free(data);
- (*(handler->responseHandler.completeCallback))
- (status, 0, callbackData);
- return;
- }
+ simplexml_initialize(&(data->simpleXml), &xmlCallback, data);
data->responsePropertiesCallback =
handler->responseHandler.propertiesCallback;
diff --git a/src/simplexml.c b/src/simplexml.c
index db88df6..5542d3b 100644
--- a/src/simplexml.c
+++ b/src/simplexml.c
@@ -161,16 +161,14 @@ static struct _xmlSAXHandler saxHandlerG =
0 // xmlStructuredErrorFunc serror;
};
-S3Status simplexml_initialize(SimpleXml *simpleXml,
- SimpleXmlCallback *callback, void *callbackData)
+void simplexml_initialize(SimpleXml *simpleXml,
+ SimpleXmlCallback *callback, void *callbackData)
{
simpleXml->callback = callback;
simpleXml->callbackData = callbackData;
simpleXml->elementPathLen = 0;
simpleXml->status = S3StatusOK;
simpleXml->xmlParser = 0;
-
- return S3StatusOK;
}
diff --git a/src/testsimplexml.c b/src/testsimplexml.c
index dd779df..9cb1367 100644
--- a/src/testsimplexml.c
+++ b/src/testsimplexml.c
@@ -56,12 +56,7 @@ int main(int argc, char **argv)
SimpleXml simpleXml;
- S3Status status = simplexml_initialize(&simpleXml, &simpleXmlCallback, 0);
-
- if (status != S3StatusOK) {
- fprintf(stderr, "ERROR: Failed to initialize: %d\n", status);
- return -1;
- }
+ simplexml_initialize(&simpleXml, &simpleXmlCallback, 0);
// Read chunks of 10K from stdin, and then feed them in random chunks
// to simplexml_add
@@ -72,7 +67,7 @@ int main(int argc, char **argv)
char *buf = inbuf;
while (amt_read) {
int amt = (rand() % amt_read) + 1;
- status = simplexml_add(&simpleXml, buf, amt);
+ S3Status status = simplexml_add(&simpleXml, buf, amt);
if (status != S3StatusOK) {
fprintf(stderr, "ERROR: Parse failure: %d\n", status);
simplexml_deinitialize(&simpleXml);