vsscanf.c revision 76726
150276Speter/*
250276Speter * This function is needed to support vwscanw
350276Speter */
450276Speter
550276Speter#include <curses.priv.h>
650276Speter
750276Speter#if !HAVE_VSSCANF
850276Speter
976726SpeterMODULE_ID("$Id: vsscanf.c,v 1.12 2000/12/10 02:43:28 tom Exp $")
1050276Speter
1150276Speter#if defined(_IOREAD) && defined(_NFILE)
1250276Speter/*VARARGS2*/
1376726SpeterNCURSES_EXPORT(int)
1476726Spetervsscanf
1576726Speter(const char *str, const char *format, va_list ap)
1650276Speter{
1776726Speter    /*
1876726Speter     * This code should work on anything descended from AT&T SVr1.
1976726Speter     */
2076726Speter    FILE strbuf;
2150276Speter
2276726Speter    strbuf._flag = _IOREAD;
2376726Speter    strbuf._ptr = strbuf._base = (unsigned char *) str;
2476726Speter    strbuf._cnt = strlen(str);
2576726Speter    strbuf._file = _NFILE;
2650276Speter
2750276Speter#if HAVE_VFSCANF
2876726Speter    return (vfscanf(&strbuf, format, ap));
2950276Speter#else
3076726Speter    return (_doscan(&strbuf, format, ap));
3150276Speter#endif
3250276Speter}
3350276Speter#else
3450276Speter/*VARARGS2*/
3576726SpeterNCURSES_EXPORT(int)
3676726Spetervsscanf
3776726Speter(const char *str, const char *format, va_list ap)
3850276Speter{
3976726Speter    /*
4076726Speter     * You don't have a native vsscanf(3), and you don't have System-V
4176726Speter     * compatible stdio internals.  You're probably using a BSD
4276726Speter     * older than 4.4 or a really old Linux.  You lose.  Upgrade
4376726Speter     * to a current C library to win.
4476726Speter     */
4576726Speter    return -1;			/* not implemented */
4650276Speter}
4750276Speter#endif
4850276Speter#else
4976726Speterextern
5076726SpeterNCURSES_EXPORT(void)
5176726Speter_nc_vsscanf(void);		/* quiet's gcc warning */
5276726SpeterNCURSES_EXPORT(void)
5376726Speter_nc_vsscanf(void)
5476726Speter{
5576726Speter}				/* nonempty for strict ANSI compilers */
5650276Speter#endif /* !HAVE_VSSCANF */
57