Kai Tietz | 689b977 | 2010-04-08 08:39:18 +0000 | [diff] [blame] | 1 | /** |
| 2 | * This file has no copyright assigned and is placed in the Public Domain. |
Rafaël Carré | 8a67ab4 | 2012-06-28 15:40:59 +0000 | [diff] [blame] | 3 | * This file is part of the mingw-w64 runtime package. |
Kai Tietz | 689b977 | 2010-04-08 08:39:18 +0000 | [diff] [blame] | 4 | * No warranty is given; refer to the file DISCLAIMER.PD within this package. |
| 5 | */ |
Kai Tietz | 689b977 | 2010-04-08 08:39:18 +0000 | [diff] [blame] | 6 | |
| 7 | #include <stdarg.h> |
| 8 | #include <stdio.h> |
| 9 | |
David Wohlferd | 8689a6d | 2016-08-10 22:55:24 -0700 | [diff] [blame] | 10 | extern int __ms_vsscanf_internal ( |
| 11 | const char * s, |
| 12 | const char * format, |
| 13 | va_list arg, |
Pali Rohár | d0258f8 | 2022-02-06 16:28:55 +0100 | [diff] [blame] | 14 | size_t count, |
David Wohlferd | 8689a6d | 2016-08-10 22:55:24 -0700 | [diff] [blame] | 15 | int (*func)(const char * __restrict__, const char * __restrict__, ...)) |
| 16 | asm("__argtos"); |
| 17 | |
Pali Rohár | d0258f8 | 2022-02-06 16:28:55 +0100 | [diff] [blame] | 18 | extern size_t __ms_scanf_max_arg_count_internal (const char * format); |
| 19 | |
Jacek Caban | 28d2ed3 | 2025-03-22 13:30:43 +0100 | [diff] [blame] | 20 | int vsscanf (const char * __restrict__ s, |
David Wohlferd | 8689a6d | 2016-08-10 22:55:24 -0700 | [diff] [blame] | 21 | const char * __restrict__ format, va_list arg) |
| 22 | { |
Pali Rohár | d0258f8 | 2022-02-06 16:28:55 +0100 | [diff] [blame] | 23 | size_t count = __ms_scanf_max_arg_count_internal (format); |
Kai Tietz | 689b977 | 2010-04-08 08:39:18 +0000 | [diff] [blame] | 24 | int ret; |
Kai Tietz | 689b977 | 2010-04-08 08:39:18 +0000 | [diff] [blame] | 25 | |
David Wohlferd | 8689a6d | 2016-08-10 22:55:24 -0700 | [diff] [blame] | 26 | #if defined(_AMD64_) || defined(__x86_64__) || \ |
Martin Storsjö | 12ca346 | 2017-08-03 23:34:37 +0300 | [diff] [blame] | 27 | defined(_X86_) || defined(__i386__) || \ |
Martin Storsjö | d19681e | 2017-08-01 14:41:04 +0300 | [diff] [blame] | 28 | defined(_ARM_) || defined(__arm__) || \ |
| 29 | defined(_ARM64_) || defined(__aarch64__) |
Pali Rohár | d0258f8 | 2022-02-06 16:28:55 +0100 | [diff] [blame] | 30 | ret = __ms_vsscanf_internal (s, format, arg, count, sscanf); |
David Wohlferd | 8689a6d | 2016-08-10 22:55:24 -0700 | [diff] [blame] | 31 | #else |
| 32 | #error "unknown platform" |
Kai Tietz | 689b977 | 2010-04-08 08:39:18 +0000 | [diff] [blame] | 33 | #endif |
| 34 | |
| 35 | return ret; |
| 36 | } |