}
static void $strlcpy(char *dst, const char *src, size_t size) {
+ if (src == NULL)
+ src = "(null)";
if (size == 0)
return;
size_t i(0);
} dst[i] = '\0';
}
+__attribute__((__unused__))
+static void $snprintfp(char *dst, size_t size, const void *pointer) {
+ uintptr_t value(reinterpret_cast<uintptr_t>(pointer));
+ char buffer[32];
+ char *end(buffer + sizeof(buffer));
+ *--end = '\0';
+ if (value == 0)
+ *--end = '0';
+ else do {
+ unsigned digit(value & 0xf);
+ value >>= 4;
+ *--end = (digit < 10 ? '0' : 'a' - 10) + digit;
+ } while (value != 0);
+ *--end = 'x';
+ *--end = '0';
+ $strlcpy(dst, end, size);
+}
+
#ifdef __LP64__
typedef struct mach_header_64 mach_header_xx;
typedef struct nlist_64 nlist_xx;
void *(*$dlsym)(void *, const char *);
cyset($dlsym, "_dlsym", dyld);
- void (*CYHandleServer)(pid_t);
- CYHandleServer = reinterpret_cast<void (*)(pid_t)>($dlsym(handle, "CYHandleServer"));
+ void (*CYHandleServer)(pid_t, char *, size_t);
+ CYHandleServer = reinterpret_cast<void (*)(pid_t, char *, size_t)>($dlsym(handle, "CYHandleServer"));
if (CYHandleServer == NULL) {
$strlcpy(baton->error, $dlerror(), sizeof(baton->error));
return NULL;
}
- CYHandleServer(baton->pid);
+ CYHandleServer(baton->pid, baton->error, sizeof(baton->error));
return NULL;
}