marker = s->args.get("marker");
max_keys = s->args.get(limit_opt_name);
if (!max_keys.empty()) {
- max = atoi(max_keys.c_str());
+ const char *srcptr = max_keys.c_str();
+ char *endptr;
+ max = strtol(max_keys.c_str(), &endptr, 10);
+ if (endptr) {
+ while (*endptr && isspace(*endptr)) // ignore white space
+ endptr++;
+ if (*endptr) {
+ ret = -EINVAL;
+ goto done;
+ }
+ }
} else {
max = default_max;
}
result.clear();
int i;
- for (i=0; i<max && p != dir_map.end(); i++, ++p) {
+ for (i=0; (!max || i<max) && p != dir_map.end(); i++, ++p) {
RGWObjEnt obj;
string name = p->first;
string key = p->second;
s->formatter->dump_format("Prefix", prefix.c_str());
if (!marker.empty())
s->formatter->dump_format("Marker", marker.c_str());
- if (!max_keys.empty()) {
- s->formatter->dump_format("MaxKeys", max_keys.c_str());
- }
+ s->formatter->dump_int("MaxKeys", max);
if (!delimiter.empty())
s->formatter->dump_format("Delimiter", delimiter.c_str());