On Mon, 21 Dec 2009, Mark Heily wrote:
When compiling a libdispatch debug build on Linux, I found that getprogname(3) is not available. Here is a patch that implements a wrapper function.
Could you tweak the approach slightly to: - Add a src/shims/getprogname.[ch], implementing getprogname() there if it's not available? - Directly test for program_invocation_short_name using configure and use the resulting HAVE_ ifdef as needed? I think this would be more consistent with the shims setup that Paolo has been pushing us towards. Thanks! Robert N M Watson Computer Laboratory University of Cambridge
Regards,
- Mark
Index: configure.ac =================================================================== --- configure.ac (revision 174) +++ configure.ac (working copy) @@ -192,7 +192,7 @@ AC_CHECK_DECLS([FD_COPY], [], [], [[#include <sys/select.h>]]) AC_CHECK_DECLS([SIGEMT], [], [], [[#include <signal.h>]]) AC_CHECK_DECLS([VQ_UPDATE, VQ_VERYLOWDISK], [], [], [[#include <sys/mount.h>]]) -AC_CHECK_FUNCS([pthread_key_init_np pthread_main_np mach_absolute_time malloc_create_zone sysconf]) +AC_CHECK_FUNCS([pthread_key_init_np pthread_main_np mach_absolute_time malloc_create_zone sysconf getprogname])
AC_CHECK_DECLS([POSIX_SPAWN_START_SUSPENDED], [have_posix_spawn_start_suspended=true], Index: src/queue.c =================================================================== --- src/queue.c (revision 174) +++ src/queue.c (working copy) @@ -1786,6 +1786,18 @@ va_end(ap); }
+static char * +dispatch_getprogname(void) +{ +#if HAVE_GETPROGNAME + return getprogname(); +#elif __linux__ + return program_invocation_short_name; +#else +#error getprogname() is not available on this platform +#endif +} + void _dispatch_logv(const char *msg, va_list ap) { @@ -1806,7 +1818,8 @@ struct timeval tv; gettimeofday(&tv, NULL); fprintf(logfile, "=== log file opened for %s[%u] at %ld.%06u ===\n", - getprogname() ?: "", getpid(), tv.tv_sec, tv.tv_usec); + dispatch_getprogname() ?: "", + getpid(), tv.tv_sec, tv.tv_usec); } } vfprintf(logfile, newbuf, ap); _______________________________________________ libdispatch-dev mailing list libdispatch-dev@lists.macosforge.org http://lists.macosforge.org/mailman/listinfo.cgi/libdispatch-dev