blob: 31eae9535d2b405901ed1ba5bd5a8e7661c3735c [file] [log] [blame]
Kai Tietz689b9772010-04-08 08:39:18 +00001/**
2 * This file has no copyright assigned and is placed in the Public Domain.
Rafaël Carré8a67ab42012-06-28 15:40:59 +00003 * This file is part of the mingw-w64 runtime package.
Kai Tietz689b9772010-04-08 08:39:18 +00004 * No warranty is given; refer to the file DISCLAIMER.PD within this package.
5 */
Kai Tietz689b9772010-04-08 08:39:18 +00006
7#include <stdarg.h>
8#include <stdio.h>
9
David Wohlferd8689a6d2016-08-10 22:55:24 -070010extern int __ms_vsscanf_internal (
11 const char * s,
12 const char * format,
13 va_list arg,
Pali Rohárd0258f82022-02-06 16:28:55 +010014 size_t count,
David Wohlferd8689a6d2016-08-10 22:55:24 -070015 int (*func)(const char * __restrict__, const char * __restrict__, ...))
16 asm("__argtos");
17
Pali Rohárd0258f82022-02-06 16:28:55 +010018extern size_t __ms_scanf_max_arg_count_internal (const char * format);
19
Jacek Caban28d2ed32025-03-22 13:30:43 +010020int vsscanf (const char * __restrict__ s,
David Wohlferd8689a6d2016-08-10 22:55:24 -070021 const char * __restrict__ format, va_list arg)
22{
Pali Rohárd0258f82022-02-06 16:28:55 +010023 size_t count = __ms_scanf_max_arg_count_internal (format);
Kai Tietz689b9772010-04-08 08:39:18 +000024 int ret;
Kai Tietz689b9772010-04-08 08:39:18 +000025
David Wohlferd8689a6d2016-08-10 22:55:24 -070026#if defined(_AMD64_) || defined(__x86_64__) || \
Martin Storsjö12ca3462017-08-03 23:34:37 +030027 defined(_X86_) || defined(__i386__) || \
Martin Storsjöd19681e2017-08-01 14:41:04 +030028 defined(_ARM_) || defined(__arm__) || \
29 defined(_ARM64_) || defined(__aarch64__)
Pali Rohárd0258f82022-02-06 16:28:55 +010030 ret = __ms_vsscanf_internal (s, format, arg, count, sscanf);
David Wohlferd8689a6d2016-08-10 22:55:24 -070031#else
32#error "unknown platform"
Kai Tietz689b9772010-04-08 08:39:18 +000033#endif
34
35 return ret;
36}