WS63 SDK 文档 7021f4f@fbb_ws63
ws63 和 ws63e 解决方案的 SDK 文档
载入中...
搜索中...
未找到
secinput.h
浏览该文件的文档.
1/*
2 * Copyright (c) Huawei Technologies Co., Ltd. 2014-2021. All rights reserved.
3 * Licensed under Mulan PSL v2.
4 * You can use this software according to the terms and conditions of the Mulan PSL v2.
5 * You may obtain a copy of Mulan PSL v2 at:
6 * http://license.coscl.org.cn/MulanPSL2
7 * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
8 * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
9 * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
10 * See the Mulan PSL v2 for more details.
11 * Description: Define macro, data struct, and declare function prototype,
12 * which is used by input.inl, secureinput_a.c and secureinput_w.c.
13 * Create: 2014-02-25
14 */
15
16#ifndef SEC_INPUT_H_E950DA2C_902F_4B15_BECD_948E99090D9C
17#define SEC_INPUT_H_E950DA2C_902F_4B15_BECD_948E99090D9C
18#include "securecutil.h"
19
20#define SECUREC_SCANF_EINVAL (-1)
21#define SECUREC_SCANF_ERROR_PARA (-2)
22
23/* For internal stream flag */
24#define SECUREC_MEM_STR_FLAG 0x01U
25#define SECUREC_FILE_STREAM_FLAG 0x02U
26#define SECUREC_PIPE_STREAM_FLAG 0x04U
27#define SECUREC_LOAD_FILE_TO_MEM_FLAG 0x08U
28
29#define SECUREC_UCS_BOM_HEADER_SIZE 2U
30#define SECUREC_UCS_BOM_HEADER_BE_1ST 0xfeU
31#define SECUREC_UCS_BOM_HEADER_BE_2ST 0xffU
32#define SECUREC_UCS_BOM_HEADER_LE_1ST 0xffU
33#define SECUREC_UCS_BOM_HEADER_LE_2ST 0xfeU
34#define SECUREC_UTF8_BOM_HEADER_SIZE 3U
35#define SECUREC_UTF8_BOM_HEADER_1ST 0xefU
36#define SECUREC_UTF8_BOM_HEADER_2ND 0xbbU
37#define SECUREC_UTF8_BOM_HEADER_3RD 0xbfU
38#define SECUREC_UTF8_LEAD_1ST 0xe0U
39#define SECUREC_UTF8_LEAD_2ND 0x80U
40
41#define SECUREC_BEGIN_WITH_UCS_BOM(s, len) ((len) == SECUREC_UCS_BOM_HEADER_SIZE && \
42 (((unsigned char)((s)[0]) == SECUREC_UCS_BOM_HEADER_LE_1ST && \
43 (unsigned char)((s)[1]) == SECUREC_UCS_BOM_HEADER_LE_2ST) || \
44 ((unsigned char)((s)[0]) == SECUREC_UCS_BOM_HEADER_BE_1ST && \
45 (unsigned char)((s)[1]) == SECUREC_UCS_BOM_HEADER_BE_2ST)))
46
47#define SECUREC_BEGIN_WITH_UTF8_BOM(s, len) ((len) == SECUREC_UTF8_BOM_HEADER_SIZE && \
48 (unsigned char)((s)[0]) == SECUREC_UTF8_BOM_HEADER_1ST && \
49 (unsigned char)((s)[1]) == SECUREC_UTF8_BOM_HEADER_2ND && \
50 (unsigned char)((s)[2]) == SECUREC_UTF8_BOM_HEADER_3RD)
51
52#ifdef SECUREC_FOR_WCHAR
53#define SECUREC_BOM_HEADER_SIZE SECUREC_UCS_BOM_HEADER_SIZE
54#define SECUREC_BEGIN_WITH_BOM(s, len) SECUREC_BEGIN_WITH_UCS_BOM((s), (len))
55#else
56#define SECUREC_BOM_HEADER_SIZE SECUREC_UTF8_BOM_HEADER_SIZE
57#define SECUREC_BEGIN_WITH_BOM(s, len) SECUREC_BEGIN_WITH_UTF8_BOM((s), (len))
58#endif
59
60typedef struct {
61 unsigned int flag; /* Mark the properties of input stream */
62 char *base; /* The pointer to the header of buffered string */
63 const char *cur; /* The pointer to next read position */
64 size_t count; /* The size of buffered string in bytes */
65#if SECUREC_ENABLE_SCANF_FILE
66 FILE *pf; /* The file pointer */
68 long oriFilePos; /* The original position of file offset when fscanf is called */
69#endif
71
72#if SECUREC_ENABLE_SCANF_FILE
73#define SECUREC_FILE_STREAM_INIT_FILE(stream, fp) do { \
74 (stream)->pf = (fp); \
75 (stream)->fileRealRead = 0; \
76 (stream)->oriFilePos = 0; \
77} SECUREC_WHILE_ZERO
78#else
79/* Disable file */
80#define SECUREC_FILE_STREAM_INIT_FILE(stream, fp)
81#endif
82
83/* This initialization for eliminating redundant initialization. */
84#define SECUREC_FILE_STREAM_FROM_STRING(stream, buf, cnt) do { \
85 (stream)->flag = SECUREC_MEM_STR_FLAG; \
86 (stream)->base = NULL; \
87 (stream)->cur = (buf); \
88 (stream)->count = (cnt); \
89 SECUREC_FILE_STREAM_INIT_FILE((stream), NULL); \
90} SECUREC_WHILE_ZERO
91
92/* This initialization for eliminating redundant initialization. */
93#define SECUREC_FILE_STREAM_FROM_FILE(stream, fp) do { \
94 (stream)->flag = SECUREC_FILE_STREAM_FLAG; \
95 (stream)->base = NULL; \
96 (stream)->cur = NULL; \
97 (stream)->count = 0; \
98 SECUREC_FILE_STREAM_INIT_FILE((stream), (fp)); \
99} SECUREC_WHILE_ZERO
100
101/* This initialization for eliminating redundant initialization. */
102#define SECUREC_FILE_STREAM_FROM_STDIN(stream) do { \
103 (stream)->flag = SECUREC_PIPE_STREAM_FLAG; \
104 (stream)->base = NULL; \
105 (stream)->cur = NULL; \
106 (stream)->count = 0; \
107 SECUREC_FILE_STREAM_INIT_FILE((stream), SECUREC_STREAM_STDIN); \
108} SECUREC_WHILE_ZERO
109
110#ifdef __cplusplus
111extern "C" {
112#endif
113int SecInputS(SecFileStream *stream, const char *cFormat, va_list argList);
114void SecClearDestBuf(const char *buffer, const char *format, va_list argList);
115#ifdef SECUREC_FOR_WCHAR
116int SecInputSW(SecFileStream *stream, const wchar_t *cFormat, va_list argList);
117void SecClearDestBufW(const wchar_t *buffer, const wchar_t *format, va_list argList);
118#endif
119
120/* 20150105 For software and hardware decoupling,such as UMG */
121#ifdef SECUREC_SYSAPI4VXWORKS
122#ifdef feof
123#undef feof
124#endif
125extern int feof(FILE *stream);
126#endif
127
128#if defined(SECUREC_SYSAPI4VXWORKS) || defined(SECUREC_CTYPE_MACRO_ADAPT)
129#ifndef isspace
130#define isspace(c) (((c) == ' ') || ((c) == '\t') || ((c) == '\r') || ((c) == '\n'))
131#endif
132#ifndef iswspace
133#define iswspace(c) (((c) == L' ') || ((c) == L'\t') || ((c) == L'\r') || ((c) == L'\n'))
134#endif
135#ifndef isascii
136#define isascii(c) (((unsigned char)(c)) <= 0x7f)
137#endif
138#ifndef isupper
139#define isupper(c) ((c) >= 'A' && (c) <= 'Z')
140#endif
141#ifndef islower
142#define islower(c) ((c) >= 'a' && (c) <= 'z')
143#endif
144#ifndef isalpha
145#define isalpha(c) (isupper(c) || (islower(c)))
146#endif
147#ifndef isdigit
148#define isdigit(c) ((c) >= '0' && (c) <= '9')
149#endif
150#ifndef isxupper
151#define isxupper(c) ((c) >= 'A' && (c) <= 'F')
152#endif
153#ifndef isxlower
154#define isxlower(c) ((c) >= 'a' && (c) <= 'f')
155#endif
156#ifndef isxdigit
157#define isxdigit(c) (isdigit(c) || isxupper(c) || isxlower(c))
158#endif
159#endif
160
161#ifdef __cplusplus
162}
163#endif
164/* Reserved file operation macro interface, s is FILE *, i is fileno zero. */
165#ifndef SECUREC_LOCK_FILE
166#define SECUREC_LOCK_FILE(s)
167#endif
168
169#ifndef SECUREC_UNLOCK_FILE
170#define SECUREC_UNLOCK_FILE(s)
171#endif
172
173#ifndef SECUREC_LOCK_STDIN
174#define SECUREC_LOCK_STDIN(i, s)
175#endif
176
177#ifndef SECUREC_UNLOCK_STDIN
178#define SECUREC_UNLOCK_STDIN(i, s)
179#endif
180#endif
181
int format(const char *dev, int sectors, int option)
formatting sd card
int SecInputS(SecFileStream *stream, const char *cFormat, va_list argList)
void SecClearDestBuf(const char *buffer, const char *format, va_list argList)
Definition secinput.h:60
long oriFilePos
Definition secinput.h:68
char * base
Definition secinput.h:62
const char * cur
Definition secinput.h:63
size_t count
Definition secinput.h:64
FILE * pf
Definition secinput.h:66
size_t fileRealRead
Definition secinput.h:67
unsigned int flag
Definition secinput.h:61