]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
common/Formatter: add dump_format_unquoted()
authorSage Weil <sage@inktank.com>
Sat, 27 Jul 2013 04:41:27 +0000 (21:41 -0700)
committerSage Weil <sage@inktank.com>
Sat, 27 Jul 2013 04:47:33 +0000 (21:47 -0700)
Sometimes a savvy caller wants to format the output but doesn't want it
quoted.

Signed-off-by: Sage Weil <sage@inktank.com>
src/common/Formatter.cc
src/common/Formatter.h

index 7362684c070eb1b060fc5cc349707d3f1fb946f3..c08ea5b9a2051718ddaf62b37b21a1a6bd14d5e8 100644 (file)
@@ -254,6 +254,18 @@ void JSONFormatter::dump_format(const char *name, const char *fmt, ...)
   print_quoted_string(buf);
 }
 
+void JSONFormatter::dump_format_unquoted(const char *name, const char *fmt, ...)
+{
+  char buf[LARGE_SIZE];
+  va_list ap;
+  va_start(ap, fmt);
+  vsnprintf(buf, LARGE_SIZE, fmt, ap);
+  va_end(ap);
+
+  print_name(name);
+  m_ss << buf;
+}
+
 int JSONFormatter::get_len() const
 {
   return m_ss.str().size();
@@ -404,6 +416,21 @@ void XMLFormatter::dump_format(const char *name, const char *fmt, ...)
     m_ss << "\n";
 }
 
+void XMLFormatter::dump_format_unquoted(const char *name, const char *fmt, ...)
+{
+  char buf[LARGE_SIZE];
+  va_list ap;
+  va_start(ap, fmt);
+  vsnprintf(buf, LARGE_SIZE, fmt, ap);
+  va_end(ap);
+
+  std::string e(name);
+  print_spaces();
+  m_ss << "<" << e << ">" << buf << "</" << e << ">";
+  if (m_pretty)
+    m_ss << "\n";
+}
+
 int XMLFormatter::get_len() const
 {
   return m_ss.str().size();
index c62a8303ce1131238aebdc2ebfd63938f04b9f96..da730103f41c25288c22d1b08475ddc8c941cd10 100644 (file)
@@ -45,6 +45,7 @@ class Formatter {
   virtual void dump_string(const char *name, std::string s) = 0;
   virtual std::ostream& dump_stream(const char *name) = 0;
   virtual void dump_format(const char *name, const char *fmt, ...) = 0;
+  virtual void dump_format_unquoted(const char *name, const char *fmt, ...) = 0;
   virtual int get_len() const = 0;
   virtual void write_raw_data(const char *data) = 0;
 
@@ -79,6 +80,7 @@ class JSONFormatter : public Formatter {
   void dump_string(const char *name, std::string s);
   std::ostream& dump_stream(const char *name);
   void dump_format(const char *name, const char *fmt, ...);
+  void dump_format_unquoted(const char *name, const char *fmt, ...);
   int get_len() const;
   void write_raw_data(const char *data);
 
@@ -119,6 +121,7 @@ class XMLFormatter : public Formatter {
   void dump_string(const char *name, std::string s);
   std::ostream& dump_stream(const char *name);
   void dump_format(const char *name, const char *fmt, ...);
+  void dump_format_unquoted(const char *name, const char *fmt, ...);
   int get_len() const;
   void write_raw_data(const char *data);