return 0;
}
+int mon_data_empty(bool *r)
+{
+ string mon_data = g_conf->mon_data;
+
+ DIR *dir = ::opendir(mon_data.c_str());
+ if (!dir) {
+ cerr << "opendir(" << mon_data << ") " << strerror(errno) << std::endl;
+ return -errno;
+ }
+ char buf[offsetof(struct dirent, d_name) + PATH_MAX + 1];
+
+ *r = false;
+ int code = 0;
+ struct dirent *de;
+ errno = 0;
+ while (!::readdir_r(dir, reinterpret_cast<struct dirent*>(buf), &de)) {
+ if (!de) {
+ if (errno) {
+ cerr << "readdir(" << mon_data << ") " << strerror(errno) << std::endl;
+ code = -errno;
+ }
+ break;
+ }
+ if (string(".") != de->d_name &&
+ string("..") != de->d_name) {
+ *r = true;
+ break;
+ }
+ }
+
+ ::closedir(dir);
+
+ return code;
+}
+
+int mon_exists(bool *r)
+{
+ int code = mon_data_exists(r);
+ if (code || *r == false)
+ return code;
+ return mon_data_empty(r);
+}
+
void usage()
{
cerr << "usage: ceph-mon -i monid [flags]" << std::endl;
}
bool exists;
+ if (mon_exists(&exists))
+ exit(1);
+
+ if (mkfs && exists) {
+ cerr << g_conf->mon_data << " already exists" << std::endl;
+ exit(0);
+ }
+
// -- mkfs --
if (mkfs) {