1/* gmp_sscanf -- formatted input from a string. 2 3Copyright 2001 Free Software Foundation, Inc. 4 5This file is part of the GNU MP Library. 6 7The GNU MP Library is free software; you can redistribute it and/or modify 8it under the terms of the GNU Lesser General Public License as published by 9the Free Software Foundation; either version 3 of the License, or (at your 10option) any later version. 11 12The GNU MP Library is distributed in the hope that it will be useful, but 13WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 14or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public 15License for more details. 16 17You should have received a copy of the GNU Lesser General Public License 18along with the GNU MP Library. If not, see http://www.gnu.org/licenses/. */ 19 20#include "config.h" 21 22#if HAVE_STDARG 23#include <stdarg.h> 24#else 25#include <varargs.h> 26#endif 27 28#include <stdio.h> 29 30#include "gmp.h" 31#include "gmp-impl.h" 32 33 34int 35#if HAVE_STDARG 36gmp_sscanf (const char *s, const char *fmt, ...) 37#else 38gmp_sscanf (va_alist) 39 va_dcl 40#endif 41{ 42 va_list ap; 43 int ret; 44#if HAVE_STDARG 45 va_start (ap, fmt); 46#else 47 const char *s; 48 const char *fmt; 49 va_start (ap); 50 s = va_arg (ap, const char *); 51 fmt = va_arg (ap, const char *); 52#endif 53 54#if SSCANF_WRITABLE_INPUT 55 /* let gmp_vsscanf handle the copying */ 56 ret = gmp_vsscanf (s, fmt, ap); 57#else 58 ret = __gmp_doscan (&__gmp_sscanf_funs, (void *) &s, fmt, ap); 59#endif 60 va_end (ap); 61 return ret; 62} 63