commit a15a3f7: [Minor] Do not try to set title on osx: it is totally broken

Vsevolod Stakhov vsevolod at highsecure.ru
Thu Mar 26 17:42:12 UTC 2020


Author: Vsevolod Stakhov
Date: 2020-03-26 17:36:34 +0000
URL: https://github.com/rspamd/rspamd/commit/a15a3f7c658ad32ddaf4114c5dd65bb6855ce08a

[Minor] Do not try to set title on osx: it is totally broken

---
 src/libutil/util.c | 216 +----------------------------------------------------
 1 file changed, 1 insertion(+), 215 deletions(-)

diff --git a/src/libutil/util.c b/src/libutil/util.c
index 0e3a7b97e..3dc1adea1 100644
--- a/src/libutil/util.c
+++ b/src/libutil/util.c
@@ -566,195 +566,6 @@ rspamd_title_dtor (gpointer d)
 }
 #endif
 
-#ifdef __APPLE__
-
-/* Code is based on darwin-proctitle.c used almost everywhere */
-
-/* Copyright Joyent, Inc. and other Node contributors. All rights reserved.
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to
- * deal in the Software without restriction, including without limitation the
- * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
- * sell copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
- * IN THE SOFTWARE.
- */
-
-#include <dlfcn.h>
-#include <TargetConditionals.h>
-#include <CoreFoundation/CoreFoundation.h>
-#include <ApplicationServices/ApplicationServices.h>
-
-/* Darwin is just brain damaged */
-static int (*dynamic_pthread_setname_np)(const char* name);
-static CFStringRef (*pCFStringCreateWithCString)(CFAllocatorRef,
-												 const char*,
-												 CFStringEncoding);
-static CFBundleRef (*pCFBundleGetBundleWithIdentifier)(CFStringRef);
-static void *(*pCFBundleGetDataPointerForName)(CFBundleRef, CFStringRef);
-static void *(*pCFBundleGetFunctionPointerForName)(CFBundleRef, CFStringRef);
-static CFTypeRef (*pLSGetCurrentApplicationASN)(void);
-static OSStatus (*pLSSetApplicationInformationItem)(int,
-													CFTypeRef,
-													CFStringRef,
-													CFStringRef,
-													CFDictionaryRef*);
-static CFBundleRef launch_services_bundle;
-static CFStringRef* display_name_key;
-static CFDictionaryRef (*pCFBundleGetInfoDictionary)(CFBundleRef);
-static CFBundleRef (*pCFBundleGetMainBundle)(void);
-static CFBundleRef hi_services_bundle;
-static OSStatus (*pSetApplicationIsDaemon)(int);
-static CFDictionaryRef (*pLSApplicationCheckIn)(int, CFDictionaryRef);
-static void (*pLSSetApplicationLaunchServicesServerConnectionStatus)(uint64_t,
-																	 void*);
-#define APPLE_S(s) pCFStringCreateWithCString(NULL, (s), kCFStringEncodingUTF8)
-/* Dlfunc handles */
-struct rspamd_osx_handles {
-	gpointer application_services_handle;
-	gpointer core_foundation_handle;
-};
-
-static
-void rspamd_darwin_title_dtor (void *ud)
-{
-	struct rspamd_osx_handles *hdls = (struct rspamd_osx_handles *)ud;
-
-	if (hdls->core_foundation_handle != NULL) {
-		dlclose (hdls->core_foundation_handle);
-	}
-
-	if (hdls->application_services_handle != NULL) {
-		dlclose (hdls->application_services_handle);
-	}
-}
-
-static void
-rspamd_darwin_init_title (rspamd_mempool_t *pool)
-{
-	struct rspamd_osx_handles *hdls;
-	/* Assumed that pthreads are already linked */
-	*(void **)(&dynamic_pthread_setname_np) =
-			dlsym (RTLD_DEFAULT, "pthread_setname_np");
-
-	hdls = rspamd_mempool_alloc0 (pool, sizeof (*hdls));
-
-	hdls->application_services_handle = dlopen("/System/Library/Frameworks/"
-										 "ApplicationServices.framework/"
-										 "Versions/A/ApplicationServices",
-			RTLD_LAZY | RTLD_LOCAL);
-	hdls->core_foundation_handle = dlopen("/System/Library/Frameworks/"
-									"CoreFoundation.framework/"
-									"Versions/A/CoreFoundation",
-			RTLD_LAZY | RTLD_LOCAL);
-
-	if (hdls->application_services_handle == NULL ||
-		hdls->core_foundation_handle == NULL) {
-		goto out;
-	}
-
-	/* Fill procedures via dlsym */
-	*(void **)(&pCFStringCreateWithCString) =
-			dlsym (hdls->core_foundation_handle, "CFStringCreateWithCString");
-	*(void **)(&pCFBundleGetBundleWithIdentifier) =
-			dlsym (hdls->core_foundation_handle, "CFBundleGetBundleWithIdentifier");
-	*(void **)(&pCFBundleGetDataPointerForName) =
-			dlsym (hdls->core_foundation_handle, "CFBundleGetDataPointerForName");
-	*(void **)(&pCFBundleGetFunctionPointerForName) =
-			dlsym (hdls->core_foundation_handle, "CFBundleGetFunctionPointerForName");
-
-	if (pCFStringCreateWithCString == NULL ||
-		pCFBundleGetBundleWithIdentifier == NULL ||
-		pCFBundleGetDataPointerForName == NULL ||
-		pCFBundleGetFunctionPointerForName == NULL) {
-		goto out;
-	}
-
-	launch_services_bundle =
-			pCFBundleGetBundleWithIdentifier(APPLE_S("com.apple.LaunchServices"));
-
-	if (launch_services_bundle == NULL) {
-		goto out;
-	}
-
-	*(void **)(&pLSGetCurrentApplicationASN) =
-			pCFBundleGetFunctionPointerForName(launch_services_bundle,
-					APPLE_S("_LSGetCurrentApplicationASN"));
-
-	if (pLSGetCurrentApplicationASN == NULL) {
-		goto out;
-	}
-
-	*(void **)(&pLSSetApplicationInformationItem) =
-			pCFBundleGetFunctionPointerForName(launch_services_bundle,
-					APPLE_S("_LSSetApplicationInformationItem"));
-
-	if (pLSSetApplicationInformationItem == NULL) {
-		goto out;
-	}
-
-	display_name_key = pCFBundleGetDataPointerForName(launch_services_bundle,
-			APPLE_S("_kLSDisplayNameKey"));
-
-	if (display_name_key == NULL || *display_name_key == NULL) {
-		goto out;
-	}
-
-	*(void **)(&pCFBundleGetInfoDictionary) = dlsym (hdls->core_foundation_handle,
-			"CFBundleGetInfoDictionary");
-	*(void **)(&pCFBundleGetMainBundle) = dlsym (hdls->core_foundation_handle,
-			"CFBundleGetMainBundle");
-
-	if (pCFBundleGetInfoDictionary == NULL || pCFBundleGetMainBundle == NULL) {
-		goto out;
-	}
-
-	/* Black 10.9 magic, to remove (Not responding) mark in Activity Monitor */
-	hi_services_bundle =
-			pCFBundleGetBundleWithIdentifier(APPLE_S("com.apple.HIServices"));
-
-	if (hi_services_bundle == NULL) {
-		goto out;
-	}
-
-	*(void **)(&pSetApplicationIsDaemon) = pCFBundleGetFunctionPointerForName(
-			hi_services_bundle,
-			APPLE_S("SetApplicationIsDaemon"));
-	*(void **)(&pLSApplicationCheckIn) = pCFBundleGetFunctionPointerForName(
-			launch_services_bundle,
-			APPLE_S("_LSApplicationCheckIn"));
-	*(void **)(&pLSSetApplicationLaunchServicesServerConnectionStatus) =
-			pCFBundleGetFunctionPointerForName(
-					launch_services_bundle,
-					APPLE_S("_LSSetApplicationLaunchServicesServerConnectionStatus"));
-
-	if (pSetApplicationIsDaemon == NULL ||
-		pLSApplicationCheckIn == NULL ||
-		pLSSetApplicationLaunchServicesServerConnectionStatus == NULL) {
-		goto out;
-	}
-
-	rspamd_mempool_add_destructor (pool,
-			rspamd_darwin_title_dtor, hdls);
-
-	return;
-
-out:
-	rspamd_darwin_title_dtor (hdls);
-}
-
-#endif
-
 gint
 init_title (rspamd_mempool_t *pool,
 		gint argc, gchar *argv[], gchar *envp[])
@@ -815,8 +626,6 @@ init_title (rspamd_mempool_t *pool,
 
 	rspamd_mempool_add_destructor (pool,
 			rspamd_title_dtor, new_environ);
-#elif defined(__APPLE__)
-	rspamd_darwin_init_title (pool);
 #endif
 
 	return 0;
@@ -864,30 +673,7 @@ setproctitle (const gchar *fmt, ...)
 	written = strlen (title_buffer);
 	memset (title_buffer + written, '\0', title_buffer_size - written);
 #elif defined(__APPLE__)
-	static gchar titlebuf[128];
-
-	va_list ap;
-	int r;
-	va_start (ap, fmt);
-	r = rspamd_snprintf (titlebuf, sizeof (titlebuf), "rspamd: ");
-	rspamd_vsnprintf (titlebuf + r, sizeof (titlebuf) - r, fmt, ap);
-	va_end (ap);
-
-	if (pSetApplicationIsDaemon != NULL && pSetApplicationIsDaemon (1) != noErr) {
-		CFTypeRef asn;
-		pLSSetApplicationLaunchServicesServerConnectionStatus (0, NULL);
-		pLSApplicationCheckIn (/* Magic value */ -2,
-				pCFBundleGetInfoDictionary (pCFBundleGetMainBundle()));
-		asn = pLSGetCurrentApplicationASN ();
-		pLSSetApplicationInformationItem (/* Magic value */ -2, asn,
-				*display_name_key, APPLE_S (titlebuf), NULL);
-	}
-
-	if (dynamic_pthread_setname_np != NULL) {
-		char namebuf[64];  /* MAXTHREADNAMESIZE */
-		rspamd_strlcpy (namebuf, titlebuf, sizeof(namebuf));
-		dynamic_pthread_setname_np (namebuf);
-	}
+	/* OSX is broken, ignore this brain damaged system */
 #else
 	/* Last resort (usually broken, but eh...) */
 	GString *dest;


More information about the Commits mailing list