Complementing: It would be very useful to the ones that need to get the entire log without depend on C format functions or providing some built-in MHD format function.
On Sat, Feb 27, 2016 at 5:14 PM, silvioprog <silviop...@gmail.com> wrote: > Hello, > > I'm using MHD in a small application written in Delphi (Pascal), and it is > working like a charm. Today I needed to get all generated log from MHD, > however it seems that it depends on functions like *sprintf(), but the > Pascal Format() function is a little bit different from C, because the > Pascal ones use other format style. And the other problem is that Delphi > and Free Pascal don't have this function on their RTL, so I did something > like: > > function vsnprintf_s(buffer: Pcchar; sizeOfBuffer: size_t; count: size_t; > format: Pcchar; argptr: va_list): cint; cdecl; > external LIB_NAME name {$IFDEF > MSWINDOWS}'_vsnprintf_s'{$ELSE}'vsnprintf_s'{$ENDIF}; > > procedure ErrorLog(ACls: Pointer; AFmt: Pcchar; AArgs: va_list); cdecl; > var > S: RawByteString; > VBuffer: array[0..1024] of AnsiChar; > begin > SetString(S, VBuffer, vsnprintf_s(VBuffer, SizeOf(VBuffer), > Length(VBuffer), > AFmt, AArgs)); > SetCodePage(S, CP_UTF8, False); > MyLogger.Append(S); > end; > > It works, but it seems a very weird solution, so can I get the entire > generated MHD log in a *char? In pure C code, something like: > > void error_log(void *cls, char *log) { > printf("%s", log); > } > > Instead of: > > void error_log(void *cls, char *fmt, va_list args) { > vprintf(fmt, args); > } > > It would be very useful to the ones that need to get the entire log > without depends on C format functions. > > Thank you! > -- Silvio Clécio