/* This file is part of Eclat. Copyright (C) 2012, 2013 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 . */ static struct grecs_list *reslist; struct resource { char *map; char *resid; }; ECLAT_CL_BEGIN([], [<[FILTER...]>]) OPTION(resource-id,r,[<[MAP:]ID>], []) BEGIN struct resource *res = grecs_malloc(sizeof(*res)); char *p = strchr(optarg, ':'); if (p) { res->map = optarg; *p++ = 0; res->resid = p; } else { res->map = NULL; res->resid = optarg; } grecs_list_append(reslist, res); END OPTION(instance,i,[], []) BEGIN struct resource *res = grecs_malloc(sizeof(*res)); res->map = MAP_INSTANCE; res->resid = optarg; grecs_list_append(reslist, res); END OPTION(volume,v,[], []) BEGIN struct resource *res = grecs_malloc(sizeof(*res)); res->map = MAP_VOLUME; res->resid = optarg; grecs_list_append(reslist, res); END OPTION(ami,a,[], []) BEGIN struct resource *res = grecs_malloc(sizeof(*res)); res->map = MAP_IMAGE; res->resid = optarg; grecs_list_append(reslist, res); END OPTION(snapshot,s,[], []) BEGIN struct resource *res = grecs_malloc(sizeof(*res)); res->map = MAP_SNAPSHOT; res->resid = optarg; grecs_list_append(reslist, res); END ECLAT_CL_END ECLAT_CL_PARSER(parse_options, [],[< { static char *resource_types[] = { "customer-gateway", "dhcp-options", "image", "instance", "internet-gateway", "network-acl", "reserved-instances", "route-table", "security-group", "snapshot", "spot-instances-request", "subnet", "volume", "vpc", "vpn-connection", "vpn-gateway", NULL }; static struct filter_descr filters[] = { { "key", FILTER_STRING }, { "resource-id", FILTER_STRING }, { "resource-type", FILTER_ENUM, resource_types }, { "value", FILTER_STRING }, { NULL } }; available_filters = filters; proginfo.print_help_hook = list_filters; reslist = grecs_list_create(); GETOPT(argc, argv, *index, exit(EX_USAGE)) } >])