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