]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
common: get_process_name: use getprogname on bsd systems 15338/head
authorMykola Golub <mgolub@mirantis.com>
Fri, 26 May 2017 20:32:33 +0000 (20:32 +0000)
committerMykola Golub <mgolub@mirantis.com>
Sat, 27 May 2017 19:13:08 +0000 (21:13 +0200)
Signed-off-by: Mykola Golub <mgolub@mirantis.com>
CMakeLists.txt
src/common/code_environment.cc
src/include/config-h.in.cmake

index 2ef70cf62954a7dc9afffce785be84febb0e9e33..010127f1cc316d015d8e244c1aba30218bca47e3 100644 (file)
@@ -105,6 +105,7 @@ CHECK_FUNCTION_EXISTS(pthread_set_name_np HAVE_PTHREAD_SET_NAME_NP)
 CHECK_FUNCTION_EXISTS(pthread_setname_np HAVE_PTHREAD_SETNAME_NP)
 CHECK_FUNCTION_EXISTS(pthread_getname_np HAVE_PTHREAD_GETNAME_NP)
 CHECK_FUNCTION_EXISTS(eventfd HAVE_EVENTFD)
+CHECK_FUNCTION_EXISTS(getprogname HAVE_GETPROGNAME)
 
 CHECK_INCLUDE_FILES("linux/types.h" HAVE_LINUX_TYPES_H)
 CHECK_INCLUDE_FILES("linux/version.h" HAVE_LINUX_VERSION_H)
index 662fa36c9bdf0937179c8a9e71e8b6c83eebb61c..d3dbda5730100406cc26f6786a9ffbafec3e2d7c 100644 (file)
@@ -61,6 +61,24 @@ int get_process_name(char *buf, int len)
   return prctl(PR_GET_NAME, buf);
 }
 
+#elif defined(HAVE_GETPROGNAME)
+
+int get_process_name(char *buf, int len)
+{
+  if (len <= 0) {
+    return -EINVAL;
+  }
+
+  const char *progname = getprogname();
+  if (progname == nullptr || *progname == '\0') {
+    return -ENOSYS;
+  }
+
+  strncpy(buf, progname, len - 1);
+  buf[len - 1] = '\0';
+  return 0;
+}
+
 #else
 
 int get_process_name(char *buf, int len)
index 55df142f3ccb73daa95eecddfc6c8c63d810fb25..22aada40e7b75a10b0d800022033c475079456cc 100644 (file)
 
 #cmakedefine PYTHON_EXECUTABLE "@PYTHON_EXECUTABLE@"
 
+/* Define to 1 if you have the `getprogname' function. */
+#cmakedefine HAVE_GETPROGNAME 1
+
 #endif /* CONFIG_H */