1*f97864e9SVenkatesh Srinivas.\" $NetBSD: fmemopen.3,v 1.5 2010/10/07 00:14:14 enami Exp $ 2*f97864e9SVenkatesh Srinivas.\" 3*f97864e9SVenkatesh Srinivas.\" Copyright (c) 2010 The NetBSD Foundation, Inc. 4*f97864e9SVenkatesh Srinivas.\" All rights reserved. 5*f97864e9SVenkatesh Srinivas.\" 6*f97864e9SVenkatesh Srinivas.\" This code is derived from software contributed to The NetBSD Foundation 7*f97864e9SVenkatesh Srinivas.\" by Christos Zoulas. 8*f97864e9SVenkatesh Srinivas.\" 9*f97864e9SVenkatesh Srinivas.\" Redistribution and use in source and binary forms, with or without 10*f97864e9SVenkatesh Srinivas.\" modification, are permitted provided that the following conditions 11*f97864e9SVenkatesh Srinivas.\" are met: 12*f97864e9SVenkatesh Srinivas.\" 1. Redistributions of source code must retain the above copyright 13*f97864e9SVenkatesh Srinivas.\" notice, this list of conditions and the following disclaimer. 14*f97864e9SVenkatesh Srinivas.\" 2. Redistributions in binary form must reproduce the above copyright 15*f97864e9SVenkatesh Srinivas.\" notice, this list of conditions and the following disclaimer in the 16*f97864e9SVenkatesh Srinivas.\" documentation and/or other materials provided with the distribution. 17*f97864e9SVenkatesh Srinivas.\" 3. All advertising materials mentioning features or use of this software 18*f97864e9SVenkatesh Srinivas.\" must display the following acknowledgement: 19*f97864e9SVenkatesh Srinivas.\" This product includes software developed by the NetBSD 20*f97864e9SVenkatesh Srinivas.\" Foundation, Inc. and its contributors. 21*f97864e9SVenkatesh Srinivas.\" 4. Neither the name of The NetBSD Foundation nor the names of its 22*f97864e9SVenkatesh Srinivas.\" contributors may be used to endorse or promote products derived 23*f97864e9SVenkatesh Srinivas.\" from this software without specific prior written permission. 24*f97864e9SVenkatesh Srinivas.\" 25*f97864e9SVenkatesh Srinivas.\" THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS 26*f97864e9SVenkatesh Srinivas.\" ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 27*f97864e9SVenkatesh Srinivas.\" TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 28*f97864e9SVenkatesh Srinivas.\" PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS 29*f97864e9SVenkatesh Srinivas.\" BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 30*f97864e9SVenkatesh Srinivas.\" CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 31*f97864e9SVenkatesh Srinivas.\" SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 32*f97864e9SVenkatesh Srinivas.\" INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 33*f97864e9SVenkatesh Srinivas.\" CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 34*f97864e9SVenkatesh Srinivas.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 35*f97864e9SVenkatesh Srinivas.\" POSSIBILITY OF SUCH DAMAGE. 36*f97864e9SVenkatesh Srinivas.\" 37*f97864e9SVenkatesh Srinivas.Dd May 13, 2011 38*f97864e9SVenkatesh Srinivas.Dt FMEMOPEN 3 39*f97864e9SVenkatesh Srinivas.Os 40*f97864e9SVenkatesh Srinivas.Sh NAME 41*f97864e9SVenkatesh Srinivas.Nm fmemopen 42*f97864e9SVenkatesh Srinivas.Nd open a stream that points to the given buffer 43*f97864e9SVenkatesh Srinivas.Sh LIBRARY 44*f97864e9SVenkatesh Srinivas.Lb libc 45*f97864e9SVenkatesh Srinivas.Sh SYNOPSIS 46*f97864e9SVenkatesh Srinivas.In stdio.h 47*f97864e9SVenkatesh Srinivas.Ft FILE * 48*f97864e9SVenkatesh Srinivas.Fn fmemopen "void *restrict buffer" "size_t size" "const char *restrict mode" 49*f97864e9SVenkatesh Srinivas.Sh DESCRIPTION 50*f97864e9SVenkatesh SrinivasThe 51*f97864e9SVenkatesh Srinivas.Fn fmemopen 52*f97864e9SVenkatesh Srinivasfunction 53*f97864e9SVenkatesh Srinivasassociates a stream with the given 54*f97864e9SVenkatesh Srinivas.Fa buffer 55*f97864e9SVenkatesh Srinivasand 56*f97864e9SVenkatesh Srinivas.Fa size . 57*f97864e9SVenkatesh SrinivasThe 58*f97864e9SVenkatesh Srinivas.Fa buffer 59*f97864e9SVenkatesh Srinivascan be either 60*f97864e9SVenkatesh Srinivas.Dv NULL , 61*f97864e9SVenkatesh Srinivasor must be of the given 62*f97864e9SVenkatesh Srinivas.Fa size . 63*f97864e9SVenkatesh SrinivasIf the 64*f97864e9SVenkatesh Srinivas.Fa buffer 65*f97864e9SVenkatesh Srinivasis 66*f97864e9SVenkatesh Srinivas.Dv NULL , 67*f97864e9SVenkatesh Srinivasa 68*f97864e9SVenkatesh Srinivas.Fa buffer 69*f97864e9SVenkatesh Srinivasof the given 70*f97864e9SVenkatesh Srinivas.Fa size 71*f97864e9SVenkatesh Srinivaswill be dynamically allocated using 72*f97864e9SVenkatesh Srinivas.Xr malloc 3 73*f97864e9SVenkatesh Srinivasand freed when 74*f97864e9SVenkatesh Srinivas.Xr fclose 3 75*f97864e9SVenkatesh Srinivasis called. 76*f97864e9SVenkatesh Srinivas.Pp 77*f97864e9SVenkatesh SrinivasThe 78*f97864e9SVenkatesh Srinivas.Fa mode 79*f97864e9SVenkatesh Srinivasargument has the same meaning as in 80*f97864e9SVenkatesh Srinivas.Xr fopen 3 . 81*f97864e9SVenkatesh Srinivas.Pp 82*f97864e9SVenkatesh SrinivasThe stream treats the buffer as it would treat a file tracking the current 83*f97864e9SVenkatesh Srinivasposition to perform I/O operations. 84*f97864e9SVenkatesh SrinivasFor example, in the beginning the stream points to the beginning of the buffer, 85*f97864e9SVenkatesh Srinivasunless 86*f97864e9SVenkatesh Srinivas.Dv a 87*f97864e9SVenkatesh Srinivaswas specified in the 88*f97864e9SVenkatesh Srinivas.Fa mode 89*f97864e9SVenkatesh Srinivasargument, and then it points to the first 90*f97864e9SVenkatesh Srinivas.Dv NUL 91*f97864e9SVenkatesh Srinivasbyte. 92*f97864e9SVenkatesh SrinivasIf a 93*f97864e9SVenkatesh Srinivas.Dv NULL 94*f97864e9SVenkatesh Srinivas.Fa buffer 95*f97864e9SVenkatesh Srinivaswas specified, then the stream will always point at the first byte of the 96*f97864e9SVenkatesh Srinivas.Fa buffer . 97*f97864e9SVenkatesh Srinivas.Pp 98*f97864e9SVenkatesh SrinivasThe stream also keeps track of the 99*f97864e9SVenkatesh Srinivas.Fa size 100*f97864e9SVenkatesh Srinivasof the 101*f97864e9SVenkatesh Srinivas.Fa buffer . 102*f97864e9SVenkatesh SrinivasThe 103*f97864e9SVenkatesh Srinivas.Fa size 104*f97864e9SVenkatesh Srinivasis initialized depending on the mode: 105*f97864e9SVenkatesh Srinivas.Bl -tag -width r/w+ 106*f97864e9SVenkatesh Srinivas.It Dv r/r+ 107*f97864e9SVenkatesh SrinivasSet to the 108*f97864e9SVenkatesh Srinivas.Fa size 109*f97864e9SVenkatesh Srinivasargument. 110*f97864e9SVenkatesh Srinivas.It Dv w/w+ 111*f97864e9SVenkatesh SrinivasSet to 112*f97864e9SVenkatesh Srinivas.Dv 0 . 113*f97864e9SVenkatesh Srinivas.It Dv a/a+ 114*f97864e9SVenkatesh SrinivasSet to the first 115*f97864e9SVenkatesh Srinivas.Dv NUL 116*f97864e9SVenkatesh Srinivasbyte, or the 117*f97864e9SVenkatesh Srinivas.Fa size 118*f97864e9SVenkatesh Srinivasargument if one is not found. 119*f97864e9SVenkatesh Srinivas.El 120*f97864e9SVenkatesh Srinivas.Pp 121*f97864e9SVenkatesh SrinivasRead or write operations advance the buffer, but not to exceed the given 122*f97864e9SVenkatesh Srinivas.Fa size 123*f97864e9SVenkatesh Srinivasof the 124*f97864e9SVenkatesh Srinivas.Fa buffer . 125*f97864e9SVenkatesh SrinivasTrying to read beyond the 126*f97864e9SVenkatesh Srinivas.Fa size 127*f97864e9SVenkatesh Srinivasof the 128*f97864e9SVenkatesh Srinivas.Fa buffer 129*f97864e9SVenkatesh Srinivasresults in 130*f97864e9SVenkatesh Srinivas.Dv EOF 131*f97864e9SVenkatesh Srinivasreturned. 132*f97864e9SVenkatesh Srinivas.Dv NUL 133*f97864e9SVenkatesh Srinivasbytes are read normally. 134*f97864e9SVenkatesh SrinivasTrying to write beyond the 135*f97864e9SVenkatesh Srinivas.Fa size 136*f97864e9SVenkatesh Srinivasof the 137*f97864e9SVenkatesh Srinivas.Fa buffer 138*f97864e9SVenkatesh Srinivashas no effect. 139*f97864e9SVenkatesh Srinivas.Pp 140*f97864e9SVenkatesh SrinivasWhen a stream open for writing is either flushed or closed, a 141*f97864e9SVenkatesh Srinivas.Dv NUL 142*f97864e9SVenkatesh Srinivasbyte is written at the current position or at the end of the current 143*f97864e9SVenkatesh Srinivas.Fa size 144*f97864e9SVenkatesh Srinivasas kept internally, if there is room. 145*f97864e9SVenkatesh Srinivas.Sh RETURN VALUES 146*f97864e9SVenkatesh SrinivasUpon successful completion, 147*f97864e9SVenkatesh Srinivas.Fn fmemopen 148*f97864e9SVenkatesh Srinivasreturns a 149*f97864e9SVenkatesh Srinivas.Dv FILE 150*f97864e9SVenkatesh Srinivaspointer. 151*f97864e9SVenkatesh SrinivasOtherwise, 152*f97864e9SVenkatesh Srinivas.Dv NULL 153*f97864e9SVenkatesh Srinivasis returned and the global variable 154*f97864e9SVenkatesh Srinivas.Va errno 155*f97864e9SVenkatesh Srinivasis set to indicate the error. 156*f97864e9SVenkatesh Srinivas.Sh ERRORS 157*f97864e9SVenkatesh Srinivas.Bl -tag -width Er 158*f97864e9SVenkatesh Srinivas.It Bq Er EINVAL 159*f97864e9SVenkatesh SrinivasThe 160*f97864e9SVenkatesh Srinivas.Fa size 161*f97864e9SVenkatesh Srinivaswas 162*f97864e9SVenkatesh Srinivas.Dv 0 ; 163*f97864e9SVenkatesh Srinivasor the 164*f97864e9SVenkatesh Srinivas.Fa mode 165*f97864e9SVenkatesh Srinivasargument is invalid; 166*f97864e9SVenkatesh Srinivasor the 167*f97864e9SVenkatesh Srinivas.Fa buffer 168*f97864e9SVenkatesh Srinivasargument is 169*f97864e9SVenkatesh Srinivas.Dv NULL 170*f97864e9SVenkatesh Srinivasand the 171*f97864e9SVenkatesh Srinivas.Fa mode 172*f97864e9SVenkatesh Srinivasargument does not specify a 173*f97864e9SVenkatesh Srinivas.Dv + . 174*f97864e9SVenkatesh Srinivas.El 175*f97864e9SVenkatesh Srinivas.Pp 176*f97864e9SVenkatesh SrinivasThe 177*f97864e9SVenkatesh Srinivas.Fn fmemopen 178*f97864e9SVenkatesh Srinivasfunction 179*f97864e9SVenkatesh Srinivasmay also fail and set 180*f97864e9SVenkatesh Srinivas.Va errno 181*f97864e9SVenkatesh Srinivasfor any of the errors 182*f97864e9SVenkatesh Srinivasspecified for the routine 183*f97864e9SVenkatesh Srinivas.Xr malloc 3 . 184*f97864e9SVenkatesh Srinivas.Sh SEE ALSO 185*f97864e9SVenkatesh Srinivas.Xr fclose 3 , 186*f97864e9SVenkatesh Srinivas.Xr fflush 3 , 187*f97864e9SVenkatesh Srinivas.Xr fopen 3 , 188*f97864e9SVenkatesh Srinivas.Xr malloc 3 189*f97864e9SVenkatesh Srinivas.Sh HISTORY 190*f97864e9SVenkatesh SrinivasThe 191*f97864e9SVenkatesh Srinivas.Fn fmemopen 192*f97864e9SVenkatesh Srinivasfunctions first appeared in 193*f97864e9SVenkatesh Srinivas.Dx 2.11 . 194*f97864e9SVenkatesh Srinivas.Pp 195*f97864e9SVenkatesh SrinivasThis manual page was imported from 196*f97864e9SVenkatesh Srinivas.Nx 6.0 . 197