funopen.3 (60078) | funopen.3 (79754) |
---|---|
1.\" Copyright (c) 1990, 1991, 1993 2.\" The Regents of the University of California. All rights reserved. 3.\" 4.\" This code is derived from software contributed to Berkeley by 5.\" Chris Torek. 6.\" Redistribution and use in source and binary forms, with or without 7.\" modification, are permitted provided that the following conditions 8.\" are met: --- 18 unchanged lines hidden (view full) --- 27.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 28.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 29.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 30.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 31.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 32.\" SUCH DAMAGE. 33.\" 34.\" @(#)funopen.3 8.1 (Berkeley) 6/9/93 | 1.\" Copyright (c) 1990, 1991, 1993 2.\" The Regents of the University of California. All rights reserved. 3.\" 4.\" This code is derived from software contributed to Berkeley by 5.\" Chris Torek. 6.\" Redistribution and use in source and binary forms, with or without 7.\" modification, are permitted provided that the following conditions 8.\" are met: --- 18 unchanged lines hidden (view full) --- 27.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 28.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 29.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 30.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 31.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 32.\" SUCH DAMAGE. 33.\" 34.\" @(#)funopen.3 8.1 (Berkeley) 6/9/93 |
35.\" $FreeBSD: head/lib/libc/stdio/funopen.3 60078 2000-05-06 12:07:59Z phantom $ | 35.\" $FreeBSD: head/lib/libc/stdio/funopen.3 79754 2001-07-15 07:53:42Z dd $ |
36.\" 37.Dd June 9, 1993 38.Dt FUNOPEN 3 39.Os 40.Sh NAME 41.Nm funopen , 42.Nm fropen , 43.Nm fwopen --- 9 unchanged lines hidden (view full) --- 53.Ft FILE * 54.Fn fwopen "void *cookie" "int (*writefn)(void *, const char *, int)" 55.Sh DESCRIPTION 56The 57.Fn funopen 58function 59associates a stream with up to four 60.Dq Tn I/O No functions . | 36.\" 37.Dd June 9, 1993 38.Dt FUNOPEN 3 39.Os 40.Sh NAME 41.Nm funopen , 42.Nm fropen , 43.Nm fwopen --- 9 unchanged lines hidden (view full) --- 53.Ft FILE * 54.Fn fwopen "void *cookie" "int (*writefn)(void *, const char *, int)" 55.Sh DESCRIPTION 56The 57.Fn funopen 58function 59associates a stream with up to four 60.Dq Tn I/O No functions . |
61Either | 61Either |
62.Fa readfn 63or 64.Fa writefn 65must be specified; 66the others can be given as an appropriately-typed 67.Dv NULL 68pointer. 69These 70.Tn I/O 71functions will be used to read, write, seek and 72close the new stream. 73.Pp 74In general, omitting a function means that any attempt to perform the 75associated operation on the resulting stream will fail. | 62.Fa readfn 63or 64.Fa writefn 65must be specified; 66the others can be given as an appropriately-typed 67.Dv NULL 68pointer. 69These 70.Tn I/O 71functions will be used to read, write, seek and 72close the new stream. 73.Pp 74In general, omitting a function means that any attempt to perform the 75associated operation on the resulting stream will fail. |
76If the close function is omitted, closing the stream will flush | 76If the close function is omitted, closing the stream will flush |
77any buffered output and then succeed. 78.Pp 79The calling conventions of 80.Fa readfn , 81.Fa writefn , 82.Fa seekfn 83and 84.Fa closefn 85must match those, respectively, of 86.Xr read 2 , 87.Xr write 2 , 88.Xr seek 2 , 89and 90.Xr close 2 91with the single exception that they are passed the 92.Fa cookie | 77any buffered output and then succeed. 78.Pp 79The calling conventions of 80.Fa readfn , 81.Fa writefn , 82.Fa seekfn 83and 84.Fa closefn 85must match those, respectively, of 86.Xr read 2 , 87.Xr write 2 , 88.Xr seek 2 , 89and 90.Xr close 2 91with the single exception that they are passed the 92.Fa cookie |
93argument specified to | 93argument specified to |
94.Fn funopen 95in place of the traditional file descriptor argument. 96.Pp 97Read and write 98.Tn I/O 99functions are allowed to change the underlying buffer 100on fully buffered or line buffered streams by calling 101.Xr setvbuf 3 . --- 5 unchanged lines hidden (view full) --- 107.Pp 108All user 109.Tn I/O 110functions can report an error by returning \-1. 111Additionally, all of the functions should set the external variable 112.Va errno 113appropriately if an error occurs. 114.Pp | 94.Fn funopen 95in place of the traditional file descriptor argument. 96.Pp 97Read and write 98.Tn I/O 99functions are allowed to change the underlying buffer 100on fully buffered or line buffered streams by calling 101.Xr setvbuf 3 . --- 5 unchanged lines hidden (view full) --- 107.Pp 108All user 109.Tn I/O 110functions can report an error by returning \-1. 111Additionally, all of the functions should set the external variable 112.Va errno 113appropriately if an error occurs. 114.Pp |
115An error on | 115An error on |
116.Fn closefn 117does not keep the stream open. 118.Pp 119As a convenience, the include file 120.Aq Pa stdio.h 121defines the macros 122.Fn fropen 123and 124.Fn fwopen 125as calls to 126.Fn funopen 127with only a read or write function specified. 128.Sh RETURN VALUES | 116.Fn closefn 117does not keep the stream open. 118.Pp 119As a convenience, the include file 120.Aq Pa stdio.h 121defines the macros 122.Fn fropen 123and 124.Fn fwopen 125as calls to 126.Fn funopen 127with only a read or write function specified. 128.Sh RETURN VALUES |
129Upon successful completion, | 129Upon successful completion, |
130.Fn funopen 131returns a 132.Dv FILE 133pointer. 134Otherwise, 135.Dv NULL 136is returned and the global variable 137.Va errno --- 35 unchanged lines hidden --- | 130.Fn funopen 131returns a 132.Dv FILE 133pointer. 134Otherwise, 135.Dv NULL 136is returned and the global variable 137.Va errno --- 35 unchanged lines hidden --- |