From: joey Date: Wed, 11 Jul 2007 00:55:30 +0000 (+0000) Subject: web commit by http://blakej.myopenid.com/ X-Git-Url: https://sipb.mit.edu/gitweb.cgi/ikiwiki.git/commitdiff_plain/b4ee8390a791c390ac7b8fd0dc68bec13624194d?hp=c7f8c5fad1cd6c3089d4aa73efb0d6af0866500b web commit by http://blakej.myopenid.com/ --- diff --git a/doc/bugs/build_in_opensolaris.mdwn b/doc/bugs/build_in_opensolaris.mdwn index 4b738ccff..7c870afce 100644 --- a/doc/bugs/build_in_opensolaris.mdwn +++ b/doc/bugs/build_in_opensolaris.mdwn @@ -32,4 +32,42 @@ Thanks, Joey et al., for a really cool tool. >> one that uses portable functions (safely), rather than one that includes >> an asprintf implementation in ikiwiki. --[[Joey]] +> I got ikiwiki working (sort of) on OpenSolaris today. I ran into this problem too, and wrote a version of asprintf() from scratch which uses more portable APIs: + + + #include <stdarg.h> + + int + asprintf(char **string_ptr, const char *format, ...) + { + va_list arg; + char *str; + int size; + int rv; + + va_start(arg, format); + size = vsnprintf(NULL, 0, format, arg); + size++; + va_start(arg, format); + str = malloc(size); + if (str == NULL) { + va_end(arg); + /* + * Strictly speaking, GNU asprintf doesn't do this, + * but the caller isn't checking the return value. + */ + fprintf(stderr, "failed to allocate memory\\n"); + exit(1); + } + rv = vsnprintf(str, size, format, arg); + va_end(arg); + + *string_ptr = str; + return (rv); + } + + + +> I added this after the rest of the #include's in Wrapper.pm, and it seems to work. --Blake + [[bugs/done]]