aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorVsevolod Stakhov <vsevolod@highsecure.ru>2020-03-26 17:36:34 +0000
committerVsevolod Stakhov <vsevolod@highsecure.ru>2020-03-26 17:36:34 +0000
commita15a3f7c658ad32ddaf4114c5dd65bb6855ce08a (patch)
tree9e11864af22812edf5d555b18d4422a0d158987d /src
parenta9efb618f8301b756421e760d47d577a93408af3 (diff)
downloadrspamd-a15a3f7c658ad32ddaf4114c5dd65bb6855ce08a.tar.gz
rspamd-a15a3f7c658ad32ddaf4114c5dd65bb6855ce08a.zip
[Minor] Do not try to set title on osx: it is totally broken
Diffstat (limited to 'src')
-rw-r--r--src/libutil/util.c216
1 files changed, 1 insertions, 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;