Postfix3.3.1
データ構造 | マクロ定義 | 型定義 | 関数 | 変数
vstream.h ファイル
#include <sys/time.h>
#include <time.h>
#include <fcntl.h>
#include <stdarg.h>
#include <setjmp.h>
#include <unistd.h>
#include <vbuf.h>
#include <check_arg.h>

[ソースコード]

データ構造

struct  VSTREAM
 

マクロ定義

#define VSTREAM_JMP_BUF   sigjmp_buf
 
#define VSTREAM_IN   (&vstream_fstd[0])
 
#define VSTREAM_OUT   (&vstream_fstd[1])
 
#define VSTREAM_ERR   (&vstream_fstd[2])
 
#define VSTREAM_FLAG_RD_ERR   VBUF_FLAG_RD_ERR /* read error */
 
#define VSTREAM_FLAG_WR_ERR   VBUF_FLAG_WR_ERR /* write error */
 
#define VSTREAM_FLAG_RD_TIMEOUT   VBUF_FLAG_RD_TIMEOUT /* read timeout */
 
#define VSTREAM_FLAG_WR_TIMEOUT   VBUF_FLAG_WR_TIMEOUT /* write timeout */
 
#define VSTREAM_FLAG_ERR   VBUF_FLAG_ERR /* some I/O error */
 
#define VSTREAM_FLAG_EOF   VBUF_FLAG_EOF /* end of file */
 
#define VSTREAM_FLAG_TIMEOUT   VBUF_FLAG_TIMEOUT /* timeout error */
 
#define VSTREAM_FLAG_FIXED   VBUF_FLAG_FIXED /* fixed-size buffer */
 
#define VSTREAM_FLAG_BAD   VBUF_FLAG_BAD
 
#define VSTREAM_FLAG_READ   (1<<8) /* read buffer */
 
#define VSTREAM_FLAG_WRITE   (1<<9) /* write buffer */
 
#define VSTREAM_FLAG_SEEK   (1<<10) /* seek info valid */
 
#define VSTREAM_FLAG_NSEEK   (1<<11) /* can't seek this file */
 
#define VSTREAM_FLAG_DOUBLE   (1<<12) /* double buffer */
 
#define VSTREAM_FLAG_DEADLINE   (1<<13) /* deadline active */
 
#define VSTREAM_PURGE_READ   (1<<0) /* flush unread data */
 
#define VSTREAM_PURGE_WRITE   (1<<1) /* flush unwritten data */
 
#define VSTREAM_PURGE_BOTH   (VSTREAM_PURGE_READ|VSTREAM_PURGE_WRITE)
 
#define VSTREAM_BUFSIZE   4096
 
#define vstream_fread(v, b, n)   vbuf_read(&(v)->buf, (b), (n))
 
#define vstream_fwrite(v, b, n)   vbuf_write(&(v)->buf, (b), (n))
 
#define VSTREAM_PUTC(ch, vp)   VBUF_PUT(&(vp)->buf, (ch))
 
#define VSTREAM_GETC(vp)   VBUF_GET(&(vp)->buf)
 
#define vstream_ungetc(vp, ch)   vbuf_unget(&(vp)->buf, (ch))
 
#define VSTREAM_EOF   VBUF_EOF
 
#define VSTREAM_PUTCHAR(ch)   VSTREAM_PUTC((ch), VSTREAM_OUT)
 
#define VSTREAM_GETCHAR()   VSTREAM_GETC(VSTREAM_IN)
 
#define vstream_fileno(vp)   ((vp)->fd)
 
#define vstream_req_bufsize(vp)   ((const ssize_t) ((vp)->req_bufsize))
 
#define vstream_context(vp)   ((vp)->context)
 
#define vstream_rd_error(vp)   vbuf_rd_error(&(vp)->buf)
 
#define vstream_wr_error(vp)   vbuf_wr_error(&(vp)->buf)
 
#define vstream_ferror(vp)   vbuf_error(&(vp)->buf)
 
#define vstream_feof(vp)   vbuf_eof(&(vp)->buf)
 
#define vstream_rd_timeout(vp)   vbuf_rd_timeout(&(vp)->buf)
 
#define vstream_wr_timeout(vp)   vbuf_wr_timeout(&(vp)->buf)
 
#define vstream_ftimeout(vp)   vbuf_timeout(&(vp)->buf)
 
#define vstream_clearerr(vp)   vbuf_clearerr(&(vp)->buf)
 
#define VSTREAM_PATH(vp)   ((vp)->path ? (const char *) (vp)->path : "unknown_stream")
 
#define vstream_ftime(vp)   ((time_t) ((vp)->iotime.tv_sec))
 
#define vstream_ftimeval(vp)   ((vp)->iotime)
 
#define vstream_fstat(vp, fl)   ((vp)->buf.flags & (fl))
 
#define VSTREAM_CTL_END   0
 
#define VSTREAM_CTL_READ_FN   1
 
#define VSTREAM_CTL_WRITE_FN   2
 
#define VSTREAM_CTL_PATH   3
 
#define VSTREAM_CTL_DOUBLE   4
 
#define VSTREAM_CTL_READ_FD   5
 
#define VSTREAM_CTL_WRITE_FD   6
 
#define VSTREAM_CTL_WAITPID_FN   7
 
#define VSTREAM_CTL_TIMEOUT   8
 
#define VSTREAM_CTL_EXCEPT   9
 
#define VSTREAM_CTL_CONTEXT   10
 
#define VSTREAM_CTL_BUFSIZE   12
 
#define VSTREAM_CTL_SWAP_FD   13
 
#define VSTREAM_CTL_START_DEADLINE   14
 
#define VSTREAM_CTL_STOP_DEADLINE   15
 
#define CA_VSTREAM_CTL_END   VSTREAM_CTL_END
 
#define CA_VSTREAM_CTL_READ_FN(v)   VSTREAM_CTL_READ_FN, CHECK_VAL(VSTREAM_CTL, VSTREAM_RW_FN, (v))
 
#define CA_VSTREAM_CTL_WRITE_FN(v)   VSTREAM_CTL_WRITE_FN, CHECK_VAL(VSTREAM_CTL, VSTREAM_RW_FN, (v))
 
#define CA_VSTREAM_CTL_PATH(v)   VSTREAM_CTL_PATH, CHECK_CPTR(VSTREAM_CTL, char, (v))
 
#define CA_VSTREAM_CTL_DOUBLE   VSTREAM_CTL_DOUBLE
 
#define CA_VSTREAM_CTL_READ_FD(v)   VSTREAM_CTL_READ_FD, CHECK_VAL(VSTREAM_CTL, int, (v))
 
#define CA_VSTREAM_CTL_WRITE_FD(v)   VSTREAM_CTL_WRITE_FD, CHECK_VAL(VSTREAM_CTL, int, (v))
 
#define CA_VSTREAM_CTL_WAITPID_FN(v)   VSTREAM_CTL_WAITPID_FN, CHECK_VAL(VSTREAM_CTL, VSTREAM_WAITPID_FN, (v))
 
#define CA_VSTREAM_CTL_TIMEOUT(v)   VSTREAM_CTL_TIMEOUT, CHECK_VAL(VSTREAM_CTL, int, (v))
 
#define CA_VSTREAM_CTL_EXCEPT   VSTREAM_CTL_EXCEPT
 
#define CA_VSTREAM_CTL_CONTEXT(v)   VSTREAM_CTL_CONTEXT, CHECK_PTR(VSTREAM_CTL, void, (v))
 
#define CA_VSTREAM_CTL_BUFSIZE(v)   VSTREAM_CTL_BUFSIZE, CHECK_VAL(VSTREAM_CTL, ssize_t, (v))
 
#define CA_VSTREAM_CTL_SWAP_FD(v)   VSTREAM_CTL_SWAP_FD, CHECK_PTR(VSTREAM_CTL, VSTREAM, (v))
 
#define CA_VSTREAM_CTL_START_DEADLINE   VSTREAM_CTL_START_DEADLINE
 
#define CA_VSTREAM_CTL_STOP_DEADLINE   VSTREAM_CTL_STOP_DEADLINE
 
#define vstream_ispipe(vp)   ((vp)->pid != 0)
 
#define VSTREAM_POPEN_END   0 /* terminator */
 
#define VSTREAM_POPEN_COMMAND   1 /* command is string */
 
#define VSTREAM_POPEN_ARGV   2 /* command is array */
 
#define VSTREAM_POPEN_UID   3 /* privileges */
 
#define VSTREAM_POPEN_GID   4 /* privileges */
 
#define VSTREAM_POPEN_ENV   5 /* extra environment */
 
#define VSTREAM_POPEN_SHELL   6 /* alternative shell */
 
#define VSTREAM_POPEN_WAITPID_FN   7 /* child catcher, waitpid() compat. */
 
#define VSTREAM_POPEN_EXPORT   8 /* exportable environment */
 
#define CA_VSTREAM_POPEN_END   VSTREAM_POPEN_END
 
#define CA_VSTREAM_POPEN_COMMAND(v)   VSTREAM_POPEN_COMMAND, CHECK_CPTR(VSTREAM_PPN, char, (v))
 
#define CA_VSTREAM_POPEN_ARGV(v)   VSTREAM_POPEN_ARGV, CHECK_PPTR(VSTREAM_PPN, char, (v))
 
#define CA_VSTREAM_POPEN_UID(v)   VSTREAM_POPEN_UID, CHECK_VAL(VSTREAM_PPN, uid_t, (v))
 
#define CA_VSTREAM_POPEN_GID(v)   VSTREAM_POPEN_GID, CHECK_VAL(VSTREAM_PPN, gid_t, (v))
 
#define CA_VSTREAM_POPEN_ENV(v)   VSTREAM_POPEN_ENV, CHECK_PPTR(VSTREAM_PPN, char, (v))
 
#define CA_VSTREAM_POPEN_SHELL(v)   VSTREAM_POPEN_SHELL, CHECK_CPTR(VSTREAM_PPN, char, (v))
 
#define CA_VSTREAM_POPEN_WAITPID_FN(v)   VSTREAM_POPEN_WAITPID_FN, CHECK_VAL(VSTREAM_PPN, VSTREAM_WAITPID_FN, (v))
 
#define CA_VSTREAM_POPEN_EXPORT(v)   VSTREAM_POPEN_EXPORT, CHECK_PPTR(VSTREAM_PPN, char, (v))
 
#define VSTREAM_BST_FLAG_IN   (1<<0)
 
#define VSTREAM_BST_FLAG_OUT   (1<<1)
 
#define VSTREAM_BST_FLAG_PEND   (1<<2)
 
#define VSTREAM_BST_MASK_DIR   (VSTREAM_BST_FLAG_IN | VSTREAM_BST_FLAG_OUT)
 
#define VSTREAM_BST_IN_PEND   (VSTREAM_BST_FLAG_IN | VSTREAM_BST_FLAG_PEND)
 
#define VSTREAM_BST_OUT_PEND   (VSTREAM_BST_FLAG_OUT | VSTREAM_BST_FLAG_PEND)
 
#define vstream_peek(vp)   vstream_bufstat((vp), VSTREAM_BST_IN_PEND)
 
#define vstream_setjmp(stream)   sigsetjmp((stream)->jbuf[0], 1)
 
#define vstream_longjmp(stream, val)   siglongjmp((stream)->jbuf[0], (val))
 
#define vstream_flags(stream)   ((const int) (stream)->buf.flags)
 

型定義

typedef ssize_t(* VSTREAM_RW_FN) (int, void *, size_t, int, void *)
 
typedef pid_t(* VSTREAM_WAITPID_FN) (pid_t, WAIT_STATUS_T *, int)
 
typedef struct VSTREAM VSTREAM
 

関数

VSTREAMvstream_fopen (const char *, int, mode_t)
 
int vstream_fclose (VSTREAM *)
 
off_t WARN_UNUSED_RESULT vstream_fseek (VSTREAM *, off_t, int)
 
off_t vstream_ftell (VSTREAM *)
 
int vstream_fpurge (VSTREAM *, int)
 
int vstream_fflush (VSTREAM *)
 
int vstream_fputs (const char *, VSTREAM *)
 
VSTREAMvstream_fdopen (int, int)
 
int vstream_fdclose (VSTREAM *)
 
void vstream_control (VSTREAM *, int,...)
 
 CHECK_VAL_HELPER_DCL (VSTREAM_CTL, ssize_t)
 
 CHECK_VAL_HELPER_DCL (VSTREAM_CTL, int)
 
 CHECK_VAL_HELPER_DCL (VSTREAM_CTL, VSTREAM_WAITPID_FN)
 
 CHECK_VAL_HELPER_DCL (VSTREAM_CTL, VSTREAM_RW_FN)
 
 CHECK_PTR_HELPER_DCL (VSTREAM_CTL, void)
 
 CHECK_PTR_HELPER_DCL (VSTREAM_CTL, VSTREAM)
 
 CHECK_CPTR_HELPER_DCL (VSTREAM_CTL, char)
 
VSTREAMPRINTFLIKE (1, 2) vstream_printf(const char *
 
VSTREAM VSTREAMPRINTFLIKE (2, 3) vstream_fprintf(VSTREAM *
 
VSTREAM VSTREAM const char VSTREAMvstream_popen (int,...)
 
int vstream_pclose (VSTREAM *)
 
 CHECK_VAL_HELPER_DCL (VSTREAM_PPN, uid_t)
 
 CHECK_VAL_HELPER_DCL (VSTREAM_PPN, gid_t)
 
 CHECK_VAL_HELPER_DCL (VSTREAM_PPN, VSTREAM_WAITPID_FN)
 
 CHECK_PPTR_HELPER_DCL (VSTREAM_PPN, char)
 
 CHECK_CPTR_HELPER_DCL (VSTREAM_PPN, char)
 
VSTREAMvstream_vprintf (const char *, va_list)
 
VSTREAMvstream_vfprintf (VSTREAM *, const char *, va_list)
 
ssize_t vstream_peek (VSTREAM *)
 
ssize_t vstream_bufstat (VSTREAM *, int)
 
const char * vstream_peek_data (VSTREAM *)
 
int vstream_tweak_sock (VSTREAM *)
 
int vstream_tweak_tcp (VSTREAM *)
 

変数

VSTREAM vstream_fstd []
 

マクロ定義詳解

#define CA_VSTREAM_CTL_BUFSIZE (   v)    VSTREAM_CTL_BUFSIZE, CHECK_VAL(VSTREAM_CTL, ssize_t, (v))

vstream.h169 行目に定義があります。

#define CA_VSTREAM_CTL_CONTEXT (   v)    VSTREAM_CTL_CONTEXT, CHECK_PTR(VSTREAM_CTL, void, (v))

vstream.h165 行目に定義があります。

#define CA_VSTREAM_CTL_DOUBLE   VSTREAM_CTL_DOUBLE

vstream.h159 行目に定義があります。

#define CA_VSTREAM_CTL_END   VSTREAM_CTL_END

vstream.h155 行目に定義があります。

#define CA_VSTREAM_CTL_EXCEPT   VSTREAM_CTL_EXCEPT

vstream.h164 行目に定義があります。

#define CA_VSTREAM_CTL_PATH (   v)    VSTREAM_CTL_PATH, CHECK_CPTR(VSTREAM_CTL, char, (v))

vstream.h158 行目に定義があります。

#define CA_VSTREAM_CTL_READ_FD (   v)    VSTREAM_CTL_READ_FD, CHECK_VAL(VSTREAM_CTL, int, (v))

vstream.h160 行目に定義があります。

#define CA_VSTREAM_CTL_READ_FN (   v)    VSTREAM_CTL_READ_FN, CHECK_VAL(VSTREAM_CTL, VSTREAM_RW_FN, (v))

vstream.h156 行目に定義があります。

#define CA_VSTREAM_CTL_START_DEADLINE   VSTREAM_CTL_START_DEADLINE

vstream.h171 行目に定義があります。

#define CA_VSTREAM_CTL_STOP_DEADLINE   VSTREAM_CTL_STOP_DEADLINE

vstream.h172 行目に定義があります。

#define CA_VSTREAM_CTL_SWAP_FD (   v)    VSTREAM_CTL_SWAP_FD, CHECK_PTR(VSTREAM_CTL, VSTREAM, (v))

vstream.h170 行目に定義があります。

#define CA_VSTREAM_CTL_TIMEOUT (   v)    VSTREAM_CTL_TIMEOUT, CHECK_VAL(VSTREAM_CTL, int, (v))

vstream.h163 行目に定義があります。

#define CA_VSTREAM_CTL_WAITPID_FN (   v)    VSTREAM_CTL_WAITPID_FN, CHECK_VAL(VSTREAM_CTL, VSTREAM_WAITPID_FN, (v))

vstream.h162 行目に定義があります。

#define CA_VSTREAM_CTL_WRITE_FD (   v)    VSTREAM_CTL_WRITE_FD, CHECK_VAL(VSTREAM_CTL, int, (v))

vstream.h161 行目に定義があります。

#define CA_VSTREAM_CTL_WRITE_FN (   v)    VSTREAM_CTL_WRITE_FN, CHECK_VAL(VSTREAM_CTL, VSTREAM_RW_FN, (v))

vstream.h157 行目に定義があります。

#define CA_VSTREAM_POPEN_ARGV (   v)    VSTREAM_POPEN_ARGV, CHECK_PPTR(VSTREAM_PPN, char, (v))

vstream.h204 行目に定義があります。

#define CA_VSTREAM_POPEN_COMMAND (   v)    VSTREAM_POPEN_COMMAND, CHECK_CPTR(VSTREAM_PPN, char, (v))

vstream.h203 行目に定義があります。

#define CA_VSTREAM_POPEN_END   VSTREAM_POPEN_END

vstream.h202 行目に定義があります。

#define CA_VSTREAM_POPEN_ENV (   v)    VSTREAM_POPEN_ENV, CHECK_PPTR(VSTREAM_PPN, char, (v))

vstream.h207 行目に定義があります。

#define CA_VSTREAM_POPEN_EXPORT (   v)    VSTREAM_POPEN_EXPORT, CHECK_PPTR(VSTREAM_PPN, char, (v))

vstream.h210 行目に定義があります。

#define CA_VSTREAM_POPEN_GID (   v)    VSTREAM_POPEN_GID, CHECK_VAL(VSTREAM_PPN, gid_t, (v))

vstream.h206 行目に定義があります。

#define CA_VSTREAM_POPEN_SHELL (   v)    VSTREAM_POPEN_SHELL, CHECK_CPTR(VSTREAM_PPN, char, (v))

vstream.h208 行目に定義があります。

#define CA_VSTREAM_POPEN_UID (   v)    VSTREAM_POPEN_UID, CHECK_VAL(VSTREAM_PPN, uid_t, (v))

vstream.h205 行目に定義があります。

#define CA_VSTREAM_POPEN_WAITPID_FN (   v)    VSTREAM_POPEN_WAITPID_FN, CHECK_VAL(VSTREAM_PPN, VSTREAM_WAITPID_FN, (v))

vstream.h209 行目に定義があります。

#define VSTREAM_BST_FLAG_IN   (1<<0)

vstream.h224 行目に定義があります。

#define VSTREAM_BST_FLAG_OUT   (1<<1)

vstream.h225 行目に定義があります。

#define VSTREAM_BST_FLAG_PEND   (1<<2)

vstream.h226 行目に定義があります。

#define VSTREAM_BST_IN_PEND   (VSTREAM_BST_FLAG_IN | VSTREAM_BST_FLAG_PEND)

vstream.h229 行目に定義があります。

#define VSTREAM_BST_MASK_DIR   (VSTREAM_BST_FLAG_IN | VSTREAM_BST_FLAG_OUT)

vstream.h228 行目に定義があります。

#define VSTREAM_BST_OUT_PEND   (VSTREAM_BST_FLAG_OUT | VSTREAM_BST_FLAG_PEND)

vstream.h230 行目に定義があります。

#define VSTREAM_BUFSIZE   4096

vstream.h92 行目に定義があります。

#define vstream_clearerr (   vp)    vbuf_clearerr(&(vp)->buf)

vstream.h125 行目に定義があります。

#define vstream_context (   vp)    ((vp)->context)

vstream.h117 行目に定義があります。

#define VSTREAM_CTL_BUFSIZE   12

vstream.h149 行目に定義があります。

#define VSTREAM_CTL_CONTEXT   10

vstream.h145 行目に定義があります。

#define VSTREAM_CTL_DOUBLE   4

vstream.h139 行目に定義があります。

#define VSTREAM_CTL_END   0

vstream.h135 行目に定義があります。

#define VSTREAM_CTL_EXCEPT   9

vstream.h144 行目に定義があります。

#define VSTREAM_CTL_PATH   3

vstream.h138 行目に定義があります。

#define VSTREAM_CTL_READ_FD   5

vstream.h140 行目に定義があります。

#define VSTREAM_CTL_READ_FN   1

vstream.h136 行目に定義があります。

#define VSTREAM_CTL_START_DEADLINE   14

vstream.h151 行目に定義があります。

#define VSTREAM_CTL_STOP_DEADLINE   15

vstream.h152 行目に定義があります。

#define VSTREAM_CTL_SWAP_FD   13

vstream.h150 行目に定義があります。

#define VSTREAM_CTL_TIMEOUT   8

vstream.h143 行目に定義があります。

#define VSTREAM_CTL_WAITPID_FN   7

vstream.h142 行目に定義があります。

#define VSTREAM_CTL_WRITE_FD   6

vstream.h141 行目に定義があります。

#define VSTREAM_CTL_WRITE_FN   2

vstream.h137 行目に定義があります。

#define VSTREAM_EOF   VBUF_EOF

vstream.h110 行目に定義があります。

#define VSTREAM_ERR   (&vstream_fstd[2])

vstream.h68 行目に定義があります。

#define vstream_feof (   vp)    vbuf_eof(&(vp)->buf)

vstream.h121 行目に定義があります。

#define vstream_ferror (   vp)    vbuf_error(&(vp)->buf)

vstream.h120 行目に定義があります。

#define vstream_fileno (   vp)    ((vp)->fd)

vstream.h115 行目に定義があります。

#define VSTREAM_FLAG_BAD   VBUF_FLAG_BAD

vstream.h79 行目に定義があります。

#define VSTREAM_FLAG_DEADLINE   (1<<13) /* deadline active */

vstream.h86 行目に定義があります。

#define VSTREAM_FLAG_DOUBLE   (1<<12) /* double buffer */

vstream.h85 行目に定義があります。

#define VSTREAM_FLAG_EOF   VBUF_FLAG_EOF /* end of file */

vstream.h76 行目に定義があります。

#define VSTREAM_FLAG_ERR   VBUF_FLAG_ERR /* some I/O error */

vstream.h75 行目に定義があります。

#define VSTREAM_FLAG_FIXED   VBUF_FLAG_FIXED /* fixed-size buffer */

vstream.h78 行目に定義があります。

#define VSTREAM_FLAG_NSEEK   (1<<11) /* can't seek this file */

vstream.h84 行目に定義があります。

#define VSTREAM_FLAG_RD_ERR   VBUF_FLAG_RD_ERR /* read error */

vstream.h70 行目に定義があります。

#define VSTREAM_FLAG_RD_TIMEOUT   VBUF_FLAG_RD_TIMEOUT /* read timeout */

vstream.h72 行目に定義があります。

#define VSTREAM_FLAG_READ   (1<<8) /* read buffer */

vstream.h81 行目に定義があります。

#define VSTREAM_FLAG_SEEK   (1<<10) /* seek info valid */

vstream.h83 行目に定義があります。

#define VSTREAM_FLAG_TIMEOUT   VBUF_FLAG_TIMEOUT /* timeout error */

vstream.h77 行目に定義があります。

#define VSTREAM_FLAG_WR_ERR   VBUF_FLAG_WR_ERR /* write error */

vstream.h71 行目に定義があります。

#define VSTREAM_FLAG_WR_TIMEOUT   VBUF_FLAG_WR_TIMEOUT /* write timeout */

vstream.h73 行目に定義があります。

#define VSTREAM_FLAG_WRITE   (1<<9) /* write buffer */

vstream.h82 行目に定義があります。

#define vstream_flags (   stream)    ((const int) (stream)->buf.flags)

vstream.h258 行目に定義があります。

#define vstream_fread (   v,
  b,
 
)    vbuf_read(&(v)->buf, (b), (n))

vstream.h104 行目に定義があります。

#define vstream_fstat (   vp,
  fl 
)    ((vp)->buf.flags & (fl))

vstream.h130 行目に定義があります。

#define vstream_ftime (   vp)    ((time_t) ((vp)->iotime.tv_sec))

vstream.h127 行目に定義があります。

#define vstream_ftimeout (   vp)    vbuf_timeout(&(vp)->buf)

vstream.h124 行目に定義があります。

#define vstream_ftimeval (   vp)    ((vp)->iotime)

vstream.h128 行目に定義があります。

#define vstream_fwrite (   v,
  b,
 
)    vbuf_write(&(v)->buf, (b), (n))

vstream.h105 行目に定義があります。

#define VSTREAM_GETC (   vp)    VBUF_GET(&(vp)->buf)

vstream.h108 行目に定義があります。

#define VSTREAM_GETCHAR ( )    VSTREAM_GETC(VSTREAM_IN)

vstream.h113 行目に定義があります。

#define VSTREAM_IN   (&vstream_fstd[0])

vstream.h66 行目に定義があります。

#define vstream_ispipe (   vp)    ((vp)->pid != 0)

vstream.h188 行目に定義があります。

#define VSTREAM_JMP_BUF   sigjmp_buf

vstream.h40 行目に定義があります。

#define vstream_longjmp (   stream,
  val 
)    siglongjmp((stream)->jbuf[0], (val))

vstream.h249 行目に定義があります。

#define VSTREAM_OUT   (&vstream_fstd[1])

vstream.h67 行目に定義があります。

#define VSTREAM_PATH (   vp)    ((vp)->path ? (const char *) (vp)->path : "unknown_stream")

vstream.h126 行目に定義があります。

#define vstream_peek (   vp)    vstream_bufstat((vp), VSTREAM_BST_IN_PEND)

vstream.h232 行目に定義があります。

#define VSTREAM_POPEN_ARGV   2 /* command is array */

vstream.h193 行目に定義があります。

#define VSTREAM_POPEN_COMMAND   1 /* command is string */

vstream.h192 行目に定義があります。

#define VSTREAM_POPEN_END   0 /* terminator */

vstream.h191 行目に定義があります。

#define VSTREAM_POPEN_ENV   5 /* extra environment */

vstream.h196 行目に定義があります。

#define VSTREAM_POPEN_EXPORT   8 /* exportable environment */

vstream.h199 行目に定義があります。

#define VSTREAM_POPEN_GID   4 /* privileges */

vstream.h195 行目に定義があります。

#define VSTREAM_POPEN_SHELL   6 /* alternative shell */

vstream.h197 行目に定義があります。

#define VSTREAM_POPEN_UID   3 /* privileges */

vstream.h194 行目に定義があります。

#define VSTREAM_POPEN_WAITPID_FN   7 /* child catcher, waitpid() compat. */

vstream.h198 行目に定義があります。

#define VSTREAM_PURGE_BOTH   (VSTREAM_PURGE_READ|VSTREAM_PURGE_WRITE)

vstream.h90 行目に定義があります。

#define VSTREAM_PURGE_READ   (1<<0) /* flush unread data */

vstream.h88 行目に定義があります。

#define VSTREAM_PURGE_WRITE   (1<<1) /* flush unwritten data */

vstream.h89 行目に定義があります。

#define VSTREAM_PUTC (   ch,
  vp 
)    VBUF_PUT(&(vp)->buf, (ch))

vstream.h107 行目に定義があります。

#define VSTREAM_PUTCHAR (   ch)    VSTREAM_PUTC((ch), VSTREAM_OUT)

vstream.h112 行目に定義があります。

#define vstream_rd_error (   vp)    vbuf_rd_error(&(vp)->buf)

vstream.h118 行目に定義があります。

#define vstream_rd_timeout (   vp)    vbuf_rd_timeout(&(vp)->buf)

vstream.h122 行目に定義があります。

#define vstream_req_bufsize (   vp)    ((const ssize_t) ((vp)->req_bufsize))

vstream.h116 行目に定義があります。

#define vstream_setjmp (   stream)    sigsetjmp((stream)->jbuf[0], 1)

vstream.h248 行目に定義があります。

#define vstream_ungetc (   vp,
  ch 
)    vbuf_unget(&(vp)->buf, (ch))

vstream.h109 行目に定義があります。

#define vstream_wr_error (   vp)    vbuf_wr_error(&(vp)->buf)

vstream.h119 行目に定義があります。

#define vstream_wr_timeout (   vp)    vbuf_wr_timeout(&(vp)->buf)

vstream.h123 行目に定義があります。

型定義詳解

typedef struct VSTREAM VSTREAM
typedef ssize_t(* VSTREAM_RW_FN) (int, void *, size_t, int, void *)

vstream.h34 行目に定義があります。

typedef pid_t(* VSTREAM_WAITPID_FN) (pid_t, WAIT_STATUS_T *, int)

vstream.h35 行目に定義があります。

関数詳解

CHECK_CPTR_HELPER_DCL ( VSTREAM_CTL  ,
char   
)
CHECK_CPTR_HELPER_DCL ( VSTREAM_PPN  ,
char   
)
CHECK_PPTR_HELPER_DCL ( VSTREAM_PPN  ,
char   
)
CHECK_PTR_HELPER_DCL ( VSTREAM_CTL  ,
void   
)
CHECK_PTR_HELPER_DCL ( VSTREAM_CTL  ,
VSTREAM   
)
CHECK_VAL_HELPER_DCL ( VSTREAM_CTL  ,
ssize_t   
)
CHECK_VAL_HELPER_DCL ( VSTREAM_CTL  ,
int   
)
CHECK_VAL_HELPER_DCL ( VSTREAM_CTL  ,
VSTREAM_WAITPID_FN   
)
CHECK_VAL_HELPER_DCL ( VSTREAM_CTL  ,
VSTREAM_RW_FN   
)
CHECK_VAL_HELPER_DCL ( VSTREAM_PPN  ,
uid_t   
)
CHECK_VAL_HELPER_DCL ( VSTREAM_PPN  ,
gid_t   
)
CHECK_VAL_HELPER_DCL ( VSTREAM_PPN  ,
VSTREAM_WAITPID_FN   
)
VSTREAM* PRINTFLIKE ( ,
 
) const
VSTREAM VSTREAM* PRINTFLIKE ( ,
 
)
ssize_t vstream_bufstat ( VSTREAM ,
int   
)

vstream.c1539 行目に定義があります。

void vstream_control ( VSTREAM ,
int  ,
  ... 
)

vstream.c1372 行目に定義があります。

int vstream_fclose ( VSTREAM )

vstream.c1268 行目に定義があります。

int vstream_fdclose ( VSTREAM )

vstream.c1309 行目に定義があります。

VSTREAM* vstream_fdopen ( int  ,
int   
)

vstream.c1204 行目に定義があります。

int vstream_fflush ( VSTREAM )

vstream.c1257 行目に定義があります。

VSTREAM* vstream_fopen ( const char *  ,
int  ,
mode_t   
)

vstream.c1241 行目に定義があります。

int vstream_fpurge ( VSTREAM ,
int   
)

vstream.c1041 行目に定義があります。

int vstream_fputs ( const char *  ,
VSTREAM  
)

vstream.c1360 行目に定義があります。

off_t WARN_UNUSED_RESULT vstream_fseek ( VSTREAM ,
off_t  ,
int   
)

vstream.c1093 行目に定義があります。

off_t vstream_ftell ( VSTREAM )

vstream.c1157 行目に定義があります。

int vstream_pclose ( VSTREAM )

vstream_popen.c279 行目に定義があります。

ssize_t vstream_peek ( VSTREAM )

vstream.c1580 行目に定義があります。

const char* vstream_peek_data ( VSTREAM )

vstream.c1593 行目に定義があります。

VSTREAM VSTREAM const char VSTREAM* vstream_popen ( int  ,
  ... 
)

vstream_popen.c193 行目に定義があります。

int vstream_tweak_sock ( VSTREAM )

vstream_tweak.c60 行目に定義があります。

int vstream_tweak_tcp ( VSTREAM )

vstream_tweak.c86 行目に定義があります。

VSTREAM* vstream_vfprintf ( VSTREAM ,
const char *  ,
va_list   
)

vstream.c1531 行目に定義があります。

VSTREAM* vstream_vprintf ( const char *  ,
va_list   
)

vstream.c1521 行目に定義があります。

変数詳解

VSTREAM vstream_fstd[]

vstream.c496 行目に定義があります。