X-Git-Url: http://git.vanrenterghem.biz/git.ikiwiki.info.git/blobdiff_plain/e0da57358cc778436a5e5af1a2523611eb64f46e..fc7119505840b4156c5a13f1dab0cafbf3af2700:/doc/bugs/build_in_opensolaris.mdwn?ds=inline diff --git a/doc/bugs/build_in_opensolaris.mdwn b/doc/bugs/build_in_opensolaris.mdwn index 4b738ccff..faf5d9980 100644 --- a/doc/bugs/build_in_opensolaris.mdwn +++ b/doc/bugs/build_in_opensolaris.mdwn @@ -32,4 +32,43 @@ 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]] -[[bugs/done]] +> 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 + +>> I have this marked [[bugs/done]] already, because I changed it in svn to +>> not use asprintf --[[Joey]]