Ejemplo n.º 1
0
Archivo: net.c Proyecto: aragaer/wine
static int output_vprintf(const WCHAR* fmt, va_list va_args)
{
    WCHAR str[8192];
    int len;

    len = vsnprintfW(str, sizeof(str)/sizeof(*str), fmt, va_args);
    if (len < 0)
        WINE_FIXME("String too long.\n");
    else
        output_write(str, len);
    return 0;
}
Ejemplo n.º 2
0
static INT vmessagebox(HWND hwnd, INT buttons, INT titleId, INT resId, va_list ap)
{
    static const WCHAR errorW[] = {'E','r','r','o','r',0};
    static const WCHAR unknownW[] = {'U','n','k','n','o','w','n',' ','e','r','r','o','r',' ','s','t','r','i','n','g','!',0};

    WCHAR title[256];
    WCHAR errfmt[1024];
    WCHAR errstr[1024];

    if (!LoadStringW(hInst, titleId, title, COUNT_OF(title))) lstrcpyW(title, errorW);
    if (!LoadStringW(hInst, resId, errfmt, COUNT_OF(errfmt))) lstrcpyW(errfmt, unknownW);

    vsnprintfW(errstr, COUNT_OF(errstr), errfmt, ap);

    return MessageBoxW(hwnd, errstr, title, buttons);
}
Ejemplo n.º 3
0
Archivo: reg.c Proyecto: Dietr1ch/wine
static int reg_printfW(const WCHAR *msg, ...)
{
    va_list va_args;
    int wlen;
    DWORD count, ret;
    WCHAR msg_buffer[8192];

    va_start(va_args, msg);
    vsnprintfW(msg_buffer, 8192, msg, va_args);
    va_end(va_args);

    wlen = lstrlenW(msg_buffer);
    ret = WriteConsoleW(GetStdHandle(STD_OUTPUT_HANDLE), msg_buffer, wlen, &count, NULL);
    if (!ret)
    {
        DWORD len;
        char  *msgA;

        /* On Windows WriteConsoleW() fails if the output is redirected. So fall
         * back to WriteFile(), assuming the console encoding is still the right
         * one in that case.
         */
        len = WideCharToMultiByte(GetConsoleOutputCP(), 0, msg_buffer, wlen,
            NULL, 0, NULL, NULL);
        msgA = HeapAlloc(GetProcessHeap(), 0, len * sizeof(char));
        if (!msgA)
            return 0;

        WideCharToMultiByte(GetConsoleOutputCP(), 0, msg_buffer, wlen, msgA, len,
            NULL, NULL);
        WriteFile(GetStdHandle(STD_OUTPUT_HANDLE), msgA, len, &count, FALSE);
        HeapFree(GetProcessHeap(), 0, msgA);
    }

    return count;
}