acl  3.5.3.0
acl_vstring_vstream.h
浏览该文件的文档.
1 #ifndef ACL_VSTRING_VSTREAM_INCLUDE_H
2 #define ACL_VSTRING_VSTREAM_INCLUDE_H
3 
4 #ifdef __cplusplus
5 extern "C" {
6 #endif
7 
8 #include "acl_define.h"
9 #include "acl_vstring.h"
10 #include "acl_vstream.h"
11 
12 /**
13  * 从数据流中读一行数据,直至读到一行、出错,或读完为止
14  * @param vp {ACL_VSTRING*} 存储结果的缓存区
15  * @param fp {ACL_VSTREAM*} 数据流
16  * @return {int} 最后一个字符的ASCII,或 ACL_VSTREAM_EOF
17  */
18 ACL_API int acl_vstring_gets(ACL_VSTRING *vp, ACL_VSTREAM *fp);
19 
20 /**
21  * 从数据流中读一行数据,直至读到一行、出错,或读完为止, 读的数据不包含
22  * "\r\n" 或 "\n"
23  * @param vp {ACL_VSTRING*} 存储结果的缓存区
24  * @param fp {ACL_VSTREAM*} 数据流
25  * @return {int} 最后一个字符的ASCII,或 ACL_VSTREAM_EOF
26  */
27 ACL_API int acl_vstring_gets_nonl(ACL_VSTRING *vp, ACL_VSTREAM *fp);
28 
29 /**
30  * 从数据流中读到 "\0" 结尾的数据或出错为止, 但不包含 "\0"
31  * @param vp {ACL_VSTRING*} 存储结果的缓存区
32  * @param fp {ACL_VSTREAM*} 数据流
33  * @return {int} 最后一个字符的ASCII,或 ACL_VSTREAM_EOF
34  */
35 ACL_API int acl_vstring_gets_null(ACL_VSTRING *vp, ACL_VSTREAM *fp);
36 
37 /**
38  * 从数据流中读一行数据,但读的数据长度不得超过限定值
39  * @param vp {ACL_VSTRING*} 存储结果的缓存区
40  * @param fp {ACL_VSTREAM*} 数据流
41  * @param bound {ssize_t} 所读数据最大长度限制
42  * @return {int} 最后一个字符的ASCII,或 ACL_VSTREAM_EOF
43  */
44 ACL_API int acl_vstring_gets_bound(ACL_VSTRING *vp, ACL_VSTREAM *fp, ssize_t bound);
45 
46 /**
47  * 从数据流中读一行数据,但读的数据长度不得超过限定值, 且结果中不包含 "\n" 或 "\r\n"
48  * @param vp {ACL_VSTRING*} 存储结果的缓存区
49  * @param fp {ACL_VSTREAM*} 数据流
50  * @param bound {ssize_t} 所读数据最大长度限制
51  * @return {int} 最后一个字符的ASCII,或 ACL_VSTREAM_EOF
52  */
53 ACL_API int acl_vstring_gets_nonl_bound(ACL_VSTRING *vp, ACL_VSTREAM *fp, ssize_t bound);
54 
55 /**
56  * 从数据流中读到 "\0" 结尾的数据或出错或超过最大长度限制为止,结果中不包含 "\0"
57  * @param vp {ACL_VSTRING*} 存储结果的缓存区
58  * @param fp {ACL_VSTREAM*} 数据流
59  * @param bound {ssize_t} 所读数据最大长度限制
60  * @return {int} 最后一个字符的ASCII,或 ACL_VSTREAM_EOF
61  */
62 ACL_API int acl_vstring_gets_null_bound(ACL_VSTRING *vp, ACL_VSTREAM *fp, ssize_t bound);
63 
64 /**
65  * Backwards compatibility for code that still uses the vstring_fgets()
66  * interface. Unfortunately we can't change the macro name to upper case.
67  */
68 
69 #define acl_vstring_fgets(s, p) \
70  (acl_vstring_gets((s), (p)) == ACL_VSTREAM_EOF ? 0 : (s))
71 #define acl_vstring_fgets_nonl(s, p) \
72  (acl_vstring_gets_nonl((s), (p)) == ACL_VSTREAM_EOF ? 0 : (s))
73 #define acl_vstring_fgets_null(s, p) \
74  (acl_vstring_gets_null((s), (p)) == ACL_VSTREAM_EOF ? 0 : (s))
75 #define acl_vstring_fgets_bound(s, p, l) \
76  (acl_vstring_gets_bound((s), (p), (l)) == ACL_VSTREAM_EOF ? 0 : (s))
77 #define acl_vstring_fgets_nonl_bound(s, p, l) \
78  (acl_vstring_gets_nonl_bound((s), (p), (l)) == ACL_VSTREAM_EOF ? 0 : (s))
79 
80 #ifdef __cplusplus
81 }
82 #endif
83 
84 #endif
ACL_API int acl_vstring_gets_null_bound(ACL_VSTRING *vp, ACL_VSTREAM *fp, ssize_t bound)
ACL_API int acl_vstring_gets(ACL_VSTRING *vp, ACL_VSTREAM *fp)
ACL_API int acl_vstring_gets_bound(ACL_VSTRING *vp, ACL_VSTREAM *fp, ssize_t bound)
ACL_API int acl_vstring_gets_nonl_bound(ACL_VSTRING *vp, ACL_VSTREAM *fp, ssize_t bound)
ACL_API int acl_vstring_gets_nonl(ACL_VSTRING *vp, ACL_VSTREAM *fp)
ACL_API int acl_vstring_gets_null(ACL_VSTRING *vp, ACL_VSTREAM *fp)