]>
Commit | Line | Data |
---|---|---|
374ca955 A |
1 | /* |
2 | ****************************************************************************** | |
3 | * | |
4 | * Copyright (C) 1998-2004, International Business Machines | |
5 | * Corporation and others. All Rights Reserved. | |
6 | * | |
7 | ****************************************************************************** | |
8 | * | |
9 | * File uscanf.c | |
10 | * | |
11 | * Modification History: | |
12 | * | |
13 | * Date Name Description | |
14 | * 12/02/98 stephen Creation. | |
15 | * 03/13/99 stephen Modified for new C API. | |
16 | ****************************************************************************** | |
17 | */ | |
18 | ||
19 | #include "unicode/utypes.h" | |
20 | ||
21 | #if !UCONFIG_NO_FORMATTING | |
22 | ||
23 | #include "unicode/putil.h" | |
24 | #include "unicode/ustdio.h" | |
25 | #include "unicode/ustring.h" | |
26 | #include "uscanf.h" | |
27 | #include "ufile.h" | |
28 | #include "ufmt_cmn.h" | |
29 | ||
30 | #include "cmemory.h" | |
31 | #include "cstring.h" | |
32 | ||
33 | ||
34 | U_CAPI int32_t U_EXPORT2 | |
35 | u_fscanf(UFILE *f, | |
36 | const char *patternSpecification, | |
37 | ... ) | |
38 | { | |
39 | va_list ap; | |
40 | int32_t converted; | |
41 | ||
42 | va_start(ap, patternSpecification); | |
43 | converted = u_vfscanf(f, patternSpecification, ap); | |
44 | va_end(ap); | |
45 | ||
46 | return converted; | |
47 | } | |
48 | ||
49 | U_CAPI int32_t U_EXPORT2 | |
50 | u_fscanf_u(UFILE *f, | |
51 | const UChar *patternSpecification, | |
52 | ... ) | |
53 | { | |
54 | va_list ap; | |
55 | int32_t converted; | |
56 | ||
57 | va_start(ap, patternSpecification); | |
58 | converted = u_vfscanf_u(f, patternSpecification, ap); | |
59 | va_end(ap); | |
60 | ||
61 | return converted; | |
62 | } | |
63 | ||
64 | U_CAPI int32_t U_EXPORT2 /* U_CAPI ... U_EXPORT2 added by Peter Kirk 17 Nov 2001 */ | |
65 | u_vfscanf(UFILE *f, | |
66 | const char *patternSpecification, | |
67 | va_list ap) | |
68 | { | |
69 | int32_t converted; | |
70 | UChar *pattern; | |
71 | UChar patBuffer[UFMT_DEFAULT_BUFFER_SIZE]; | |
72 | int32_t size = (int32_t)uprv_strlen(patternSpecification) + 1; | |
73 | ||
74 | /* convert from the default codepage to Unicode */ | |
75 | if (size >= MAX_UCHAR_BUFFER_SIZE(patBuffer)) { | |
76 | pattern = (UChar *)uprv_malloc(size * sizeof(UChar)); | |
77 | if(pattern == 0) { | |
78 | return 0; | |
79 | } | |
80 | } | |
81 | else { | |
82 | pattern = patBuffer; | |
83 | } | |
84 | u_charsToUChars(patternSpecification, pattern, size); | |
85 | ||
86 | /* do the work */ | |
87 | converted = u_vfscanf_u(f, pattern, ap); | |
88 | ||
89 | /* clean up */ | |
90 | if (pattern != patBuffer) { | |
91 | uprv_free(pattern); | |
92 | } | |
93 | ||
94 | return converted; | |
95 | } | |
96 | ||
97 | U_CAPI int32_t U_EXPORT2 /* U_CAPI ... U_EXPORT2 added by Peter Kirk 17 Nov 2001 */ | |
98 | u_vfscanf_u(UFILE *f, | |
99 | const UChar *patternSpecification, | |
100 | va_list ap) | |
101 | { | |
102 | return u_scanf_parse(f, patternSpecification, ap); | |
103 | } | |
104 | ||
105 | #endif /* #if !UCONFIG_NO_FORMATTING */ | |
106 |