X-Git-Url: http://git.vrable.net/?a=blobdiff_plain;f=bluesky%2Fstore-s3.c;h=4735de4bb57147b7f482b401983c780e61405fcb;hb=21b992d479c38c68a173f7b9905babd0cc62fac0;hp=7f2343435e66e9041856f2816cdfcdfd41c8492e;hpb=4536000021cb67fb248317392336f69c7c045754;p=bluesky.git diff --git a/bluesky/store-s3.c b/bluesky/store-s3.c index 7f23434..4735de4 100644 --- a/bluesky/store-s3.c +++ b/bluesky/store-s3.c @@ -42,6 +42,7 @@ struct put_info { struct list_info { int success; char *last_entry; + gboolean truncated; }; static S3Status s3store_get_handler(int bufferSize, const char *buffer, @@ -145,13 +146,14 @@ static S3Status s3store_list_handler(int isTruncated, g_free(info->last_entry); info->last_entry = g_strdup(contents[contentsCount - 1].key); } + info->truncated = isTruncated; return S3StatusOK; } static char *s3store_lookup_last(gpointer s, const char *prefix) { S3Store *store = (S3Store *)s; - struct list_info info = {0, NULL}; + struct list_info info = {0, NULL, FALSE}; struct S3ListBucketHandler handler; handler.responseHandler.propertiesCallback @@ -161,9 +163,15 @@ static char *s3store_lookup_last(gpointer s, const char *prefix) char *marker = NULL; - S3_list_bucket(&store->bucket, prefix, marker, NULL, 1024, NULL, &handler, &info); + do { + S3_list_bucket(&store->bucket, prefix, marker, NULL, 1024, NULL, + &handler, &info); + g_free(marker); + marker = g_strdup(info.last_entry); + g_print("Last key: %s\n", info.last_entry); + } while (info.truncated); - g_print("Last key: %s\n", info.last_entry); + g_free(marker); return info.last_entry; }