11573Srgrimes/*-
21573Srgrimes * Copyright (c) 1990, 1993
31573Srgrimes *	The Regents of the University of California.  All rights reserved.
41573Srgrimes *
5227753Stheraven * Copyright (c) 2011 The FreeBSD Foundation
6227753Stheraven * All rights reserved.
7227753Stheraven * Portions of this software were developed by David Chisnall
8227753Stheraven * under sponsorship from the FreeBSD Foundation.
9227753Stheraven *
101573Srgrimes * This code is derived from software contributed to Berkeley by
111573Srgrimes * Donn Seeley at UUNET Technologies, Inc.
121573Srgrimes *
131573Srgrimes * Redistribution and use in source and binary forms, with or without
141573Srgrimes * modification, are permitted provided that the following conditions
151573Srgrimes * are met:
161573Srgrimes * 1. Redistributions of source code must retain the above copyright
171573Srgrimes *    notice, this list of conditions and the following disclaimer.
181573Srgrimes * 2. Redistributions in binary form must reproduce the above copyright
191573Srgrimes *    notice, this list of conditions and the following disclaimer in the
201573Srgrimes *    documentation and/or other materials provided with the distribution.
21249808Semaste * 3. Neither the name of the University nor the names of its contributors
221573Srgrimes *    may be used to endorse or promote products derived from this software
231573Srgrimes *    without specific prior written permission.
241573Srgrimes *
251573Srgrimes * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
261573Srgrimes * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
271573Srgrimes * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
281573Srgrimes * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
291573Srgrimes * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
301573Srgrimes * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
311573Srgrimes * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
321573Srgrimes * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
331573Srgrimes * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
341573Srgrimes * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
351573Srgrimes * SUCH DAMAGE.
361573Srgrimes */
371573Srgrimes
381573Srgrimes#if defined(LIBC_SCCS) && !defined(lint)
391573Srgrimesstatic char sccsid[] = "@(#)vsscanf.c	8.1 (Berkeley) 6/4/93";
401573Srgrimes#endif /* LIBC_SCCS and not lint */
4192986Sobrien#include <sys/cdefs.h>
4292986Sobrien__FBSDID("$FreeBSD: releng/11.0/lib/libc/stdio/vsscanf.c 249808 2013-04-23 13:33:13Z emaste $");
431573Srgrimes
441573Srgrimes#include <stdio.h>
451573Srgrimes#include <string.h>
46101776Stjr#include "local.h"
47227753Stheraven#include "xlocale_private.h"
481573Srgrimes
4916586Sjraynardstatic int
5092905Sobrieneofread(void *, char *, int);
5116586Sjraynard
521573Srgrimes/* ARGSUSED */
531573Srgrimesstatic int
54200799Sdelphijeofread(void *cookie, char *buf, int len)
551573Srgrimes{
561573Srgrimes
571573Srgrimes	return (0);
581573Srgrimes}
591573Srgrimes
6013545Sjulianint
61227753Stheravenvsscanf_l(const char * __restrict str, locale_t locale,
62227753Stheraven		const char * __restrict fmt, __va_list ap)
631573Srgrimes{
64205021Sjhb	FILE f = FAKE_FILE;
65227753Stheraven	FIX_LOCALE(locale);
661573Srgrimes
671573Srgrimes	f._flags = __SRD;
681573Srgrimes	f._bf._base = f._p = (unsigned char *)str;
691573Srgrimes	f._bf._size = f._r = strlen(str);
701573Srgrimes	f._read = eofread;
71227753Stheraven	return (__svfscanf(&f, locale, fmt, ap));
721573Srgrimes}
73227753Stheravenint
74227753Stheravenvsscanf(const char * __restrict str, const char * __restrict fmt,
75227753Stheraven	__va_list ap)
76227753Stheraven{
77227753Stheraven	return vsscanf_l(str, __get_locale(), fmt, ap);
78227753Stheraven}
79