From: Kefu Chai Date: Thu, 16 Nov 2017 04:34:58 +0000 (+0800) Subject: rgw: print dict-like IAM Policy element as a dict X-Git-Tag: v13.0.1~95^2~1 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=8b178f28f78d81cbde59c99ff4cbe1e7157e7aa0;p=ceph.git rgw: print dict-like IAM Policy element as a dict so they are printed like { Hello: World, Goodbye: [ Cruel, World ] } instead of [ Hello: World, Goodbye: [ Cruel, World ] ] also, all of the print_dict() caller sites are protected by `if (!foo.empty())`, so no need to check for empty. Signed-off-by: Kefu Chai --- diff --git a/src/rgw/rgw_iam_policy.cc b/src/rgw/rgw_iam_policy.cc index 1d9e2e53666c..dd11af883dd5 100644 --- a/src/rgw/rgw_iam_policy.cc +++ b/src/rgw/rgw_iam_policy.cc @@ -1193,6 +1193,15 @@ ostream& print_array(ostream& m, Iterator begin, Iterator end) { } return m; } + +template +ostream& print_dict(ostream& m, Iterator begin, Iterator end) { + m << "{ "; + std::copy(begin, end, ceph::make_ostream_joiner(m, ", ")); + m << " }"; + return m; +} + } ostream& operator <<(ostream& m, const Condition& c) { @@ -1433,12 +1442,12 @@ ostream& operator <<(ostream& m, const Statement& s) { } if (!s.princ.empty()) { m << "Principal: "; - print_array(m, s.princ.cbegin(), s.princ.cend()); + print_dict(m, s.princ.cbegin(), s.princ.cend()); m << ", "; } if (!s.noprinc.empty()) { m << "NotPrincipal: "; - print_array(m, s.noprinc.cbegin(), s.noprinc.cend()); + print_dict(m, s.noprinc.cbegin(), s.noprinc.cend()); m << ", "; } @@ -1492,7 +1501,7 @@ ostream& operator <<(ostream& m, const Statement& s) { if (!s.conditions.empty()) { m << "Condition: "; - print_array(m, s.conditions.cbegin(), s.conditions.cend()); + print_dict(m, s.conditions.cbegin(), s.conditions.cend()); } return m << " }";