]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
global-init: add a path chown wrapper function
authorKarol Mroz <kmroz@suse.com>
Sat, 23 Apr 2016 11:35:02 +0000 (13:35 +0200)
committerKarol Mroz <kmroz@suse.com>
Sat, 23 Apr 2016 11:35:02 +0000 (13:35 +0200)
Signed-off-by: Karol Mroz <kmroz@suse.com>
src/global/global_init.cc

index 5460eef30dc139085247a53f9c1992842aa4b7ac..9e9d6aa91c8d29d6e3041033414fcb9519b3f14e 100644 (file)
@@ -60,6 +60,26 @@ static const char* c_str_or_null(const std::string &str)
   return str.c_str();
 }
 
+static int chown_path(const std::string &pathname, const uid_t owner, const gid_t group,
+                     const std::string &uid_str, const std::string &gid_str)
+{
+  const char *pathname_cstr = c_str_or_null(pathname);
+
+  if (!pathname_cstr) {
+    return 0;
+  }
+
+  int r = ::chown(pathname_cstr, owner, group);
+
+  if (r < 0) {
+    r = -errno;
+    cerr << "warning: unable to chown() " << pathname << " as "
+        << uid_str << ":" << gid_str << ": " << cpp_strerror(r) << std::endl;
+  }
+
+  return r;
+}
+
 void global_pre_init(std::vector < const char * > *alt_def_args,
                     std::vector < const char* >& args,
                     uint32_t module_type, code_environment_t code_env,