diff options
author | joey <joey@0fa5a96a-9a0e-0410-b3b2-a0fd24251071> | 2007-07-11 00:55:30 +0000 |
---|---|---|
committer | joey <joey@0fa5a96a-9a0e-0410-b3b2-a0fd24251071> | 2007-07-11 00:55:30 +0000 |
commit | b4ee8390a791c390ac7b8fd0dc68bec13624194d (patch) | |
tree | d4a49a804f8661e1207248c5ac53fe4f6d1dc986 | |
parent | c7f8c5fad1cd6c3089d4aa73efb0d6af0866500b (diff) |
web commit by http://blakej.myopenid.com/
-rw-r--r-- | doc/bugs/build_in_opensolaris.mdwn | 38 |
1 files changed, 38 insertions, 0 deletions
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: + +<code> + #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); + } + +</code> + +> I added this after the rest of the #include's in Wrapper.pm, and it seems to work. --Blake + [[bugs/done]] |