Exemple #1
0
int
vswscanf(const wchar_t* s, const wchar_t* fmt, va_list args)
{
	Sfio_t	f;

	if (!s)
		return -1;

	/*
	 * make a fake stream
	 */

	SFCLEAR(&f, NiL);
	f.flags = SF_STRING|SF_READ;
	f.bits = SF_PRIVATE;
	f.mode = SF_READ;
	f.size = wcslen(s) * sizeof(wchar_t);
	f.data = f.next = f.endw = (uchar*)s;
	f.endb = f.endr = f.data + f.size;

	/*
	 * sfio does the rest
	 */

	return vfwscanf(&f, fmt, args);
}
Exemple #2
0
int
vswprintf(wchar_t* s, size_t n, const wchar_t* fmt, va_list args)
{
	Sfio_t	f;
	int	v;

	if (!s)
		return -1;

	/*
	 * make a fake stream
	 */

	SFCLEAR(&f, NiL);
	f.flags = SF_STRING|SF_WRITE;
	f.bits = SF_PRIVATE;
	f.mode = SF_WRITE;
	f.size = n - 1;
	f.data = f.next = f.endr = (uchar*)s;
	f.endb = f.endw = f.data + f.size;

	/*
	 * call and adjust
	 */

	v = vfwprintf(&f, fmt, args);
	*f.next = 0;
	_Sfi = f.next - f.data;
	return v;
}
Exemple #3
0
int sfvsscanf(const char *s, const char *form, va_list args) {
    Sfio_t f;

    if (!s || !form) return -1;

    /* make a fake stream */
    SFCLEAR(&f, NULL);
    f.flags = SF_STRING | SF_READ;
    f.bits = SF_PRIVATE;
    f.mode = SF_READ;
    f.size = strlen((char *)s);
    f.data = f.next = f.endw = (uchar *)s;
    f.endb = f.endr = f.data + f.size;

    return sfvscanf(&f, form, args);
}