]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
config.cc: better write_file. and no more -o
authorSage Weil <sage@newdream.net>
Thu, 15 May 2008 23:02:41 +0000 (16:02 -0700)
committerSage Weil <sage@newdream.net>
Thu, 15 May 2008 23:02:41 +0000 (16:02 -0700)
src/config.cc

index b8e7820cbacedc11c31e480d2963281ab6043ad3..f3b004b351f10a561cb54b461efaebb7eda1a246 100644 (file)
@@ -53,7 +53,21 @@ int buffer::list::write_file(const char *fn)
     cerr << "can't write " << fn << ": " << strerror(errno) << std::endl;
     return -errno;
   }
-  ::write(fd, (void*)c_str(), length());
+  for (std::list<ptr>::const_iterator it = _buffers.begin(); 
+       it != _buffers.end(); 
+       it++) {
+    const char *c = it->c_str();
+    int left = it->length();
+    while (left > 0) {
+      int r = ::write(fd, c, left);
+      if (r < 0) {
+       ::close(fd);
+       return -errno;
+      }
+      c += r;
+      left -= r;
+    }
+  }
   ::close(fd);
   return 0;
 }
@@ -603,7 +617,7 @@ void parse_config_options(std::vector<const char*>& args)
 
     
     
-    else if (strcmp(args[i], "-o") == 0 ||
+    else if (//strcmp(args[i], "-o") == 0 ||
             strcmp(args[i], "--doutdir") == 0) 
       g_conf.dout_dir = args[++i];