]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
rados: optionally read setxattr value from stdin
authorSage Weil <sage@redhat.com>
Wed, 6 Aug 2014 22:09:22 +0000 (15:09 -0700)
committerSage Weil <sage@redhat.com>
Wed, 6 Aug 2014 22:31:19 +0000 (15:31 -0700)
Signed-off-by: Sage Weil <sage@redhat.com>
src/tools/rados/rados.cc

index 29726d1b46dc379a8ab308957cecd688229ae474..adb357bd61f99fc0ae0cbb0e0ee955588ad3c448 100644 (file)
@@ -1641,15 +1641,22 @@ static int rados_tool_common(const std::map < std::string, std::string > &opts,
     }
   }
   else if (strcmp(nargs[0], "setxattr") == 0) {
-    if (!pool_name || nargs.size() < 4)
+    if (!pool_name || nargs.size() < 3 || nargs.size() > 4)
       usage_exit();
 
     string oid(nargs[1]);
     string attr_name(nargs[2]);
-    string attr_val(nargs[3]);
-
     bufferlist bl;
-    bl.append(attr_val.c_str(), attr_val.length());
+    if (nargs.size() == 4) {
+      string attr_val(nargs[3]);
+      bl.append(attr_val.c_str(), attr_val.length());
+    } else {
+      do {
+       ret = bl.read_fd(0, 1024); // from stdin
+       if (ret < 0)
+         goto out;
+      } while (ret > 0);
+    }
 
     ret = io_ctx.setxattr(oid, attr_name.c_str(), bl);
     if (ret < 0) {