How should vwprintf() work?

Petter Reinholdtsen petter.reinholdtsen@usit.uio.no
Fri Jul 23 09:44:00 GMT 2004


[Petter Reinholdtsen]
> Based on this failure claim on
> <URL:http://www.dinkumware.com/conform_c.html>, I started looking on
> how vwprintf() work.
> 
>   - If L"" is passed as the format parameter to vwprintf a negative
>     value is returned, indicating an error occurred.
> 

[Jakub Jelinek]
> No, that's correct behaviour.
> See e.g. ISO C99, 7.19.2:

Hm.  Then I'm not sure how to test the failure claim.  Can I freopen()
stdout?

Or perhaps I should just use the wprintf() all the way, like this:

  % cat x.c
  #include <stdio.h>
  #include <wchar.h>
  #include <stdarg.h>
  int main()
  {
    va_list args;
    int i;
  #if defined(TEST)
    wprintf(L"started\n");
  #endif /* TEST */
    i = vwprintf(L"", args);
    wprintf(L"retval: %d\n", i);
    wprintf(L"ended\n");
    return 0;
  }
  % cc -Wall -W -ansi x.c ; ./a.out
  x.c: In function `main':
  x.c:11: warning: implicit declaration of function `vwprintf'
  x.c:12: warning: implicit declaration of function `wprintf'
  retval: 0
  ended
  % cc -DTEST -Wall -W -ansi x.c ; ./a.out
  x.c: In function `main':
  x.c:9: warning: implicit declaration of function `wprintf'
  x.c:11: warning: implicit declaration of function `vwprintf'
  started
  retval: 0
  ended
  %

But this obviously work.  I must be testing the wrong thing, or
perhaps the test code used by Dikumware is testing something else?



More information about the Libc-alpha mailing list