]> git.saurik.com Git - apple/icu.git/blame - icuSources/io/uscanf.c
ICU-400.37.tar.gz
[apple/icu.git] / icuSources / io / uscanf.c
CommitLineData
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
34U_CAPI int32_t U_EXPORT2
35u_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
49U_CAPI int32_t U_EXPORT2
50u_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
64U_CAPI int32_t U_EXPORT2 /* U_CAPI ... U_EXPORT2 added by Peter Kirk 17 Nov 2001 */
65u_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
97U_CAPI int32_t U_EXPORT2 /* U_CAPI ... U_EXPORT2 added by Peter Kirk 17 Nov 2001 */
98u_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