/* This file is part of Eclat. Copyright (C) 2012 Sergey Poznyakoff. Eclat is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3, or (at your option) any later version. Eclat is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Eclat. If not, see . */ #include "eclat.h" int eclat_describe_tags(CURL *curl, int argc, char **argv) { int i, j, k; struct ec2_query *q; char *url; char *bufptr = NULL; size_t bufsize = 0; size_t bs; CURLcode res; struct wordsplit ws; int wsflags; q = eclat_query_create(use_ssl ? EC2_QF_HTTPS : 0, endpoint, "/"); eclat_query_add_param(q, "Action", "DescribeTags"); ws.ws_delim = ","; wsflags = WRDSF_DEFFLAGS | WRDSF_DELIM; for (i = 0, j = 1; i < argc; i++) { char *p = strchr(argv[i], '='); if (!p) die(EX_USAGE, "maformed filter: %s", argv[i]); *p++ = 0; grecs_asprintf(&bufptr, &bufsize, "Filter.%d.Name", j); eclat_query_add_param(q, bufptr, argv[i]); if (wordsplit(p, &ws, wsflags)) die(EX_SOFTWARE, "wordsplit failed at \"%s\": %s", p, wordsplit_strerror(&ws)); wsflags |= WRDSF_REUSE; for (k = 0; k < ws.ws_wordc; k++) { grecs_asprintf(&bufptr, &bufsize, "Filter.%d.Value.%d", j, k+1); eclat_query_add_param(q, bufptr, ws.ws_wordv[k]); } } if (wsflags & WRDSF_REUSE) wordsplit_free(&ws); free(bufptr); eclat_query_add_param(q, "AWSAccessKeyId", access_key); eclat_query_signature(q, secret_key); url = eclat_query_to_url(q, NULL); debug(ECLAT_DEBCAT_MAIN, 1, ("using URL: %s", url)); curl_easy_setopt(curl, CURLOPT_URL, url); free(url); eclat_query_free(q); if (dry_run_mode) debug(ECLAT_DEBCAT_MAIN, 1, ("not sending request")); else { res = curl_easy_perform(curl); if (res != CURLE_OK) err("CURL: %s", curl_easy_strerror(res)); } return 0; }