]> git.ipfire.org Git - thirdparty/rspamd.git/commitdiff
[Minor] Do not try to set title on osx: it is totally broken
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Thu, 26 Mar 2020 17:36:34 +0000 (17:36 +0000)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Thu, 26 Mar 2020 17:36:34 +0000 (17:36 +0000)
src/libutil/util.c

index 0e3a7b97e6d4547cd574a9c451e0865bc219f607..3dc1adea1511d77b70df6a1557c17b22599af3cd 100644 (file)
@@ -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;