GENWiki

Premier IT Outsourcing and Support Services within the UK

User Tools

Site Tools


man:open_memstream

OPEN_MEMSTREAM(3) Linux Programmer's Manual OPEN_MEMSTREAM(3)

NAME

     open_memstream, open_wmemstream -  open a dynamic memory buffer stream

SYNOPSIS

     #include <stdio.h>
     FILE *open_memstream(char **ptr, size_t *sizeloc);
     #include <wchar.h>
     FILE *open_wmemstream(wchar_t **ptr, size_t *sizeloc);
 Feature Test Macro Requirements for glibc (see feature_test_macros(7)):
     open_memstream(), open_wmemstream():
         Since glibc 2.10:
             _POSIX_C_SOURCE >= 200809L
         Before glibc 2.10:
             _GNU_SOURCE

DESCRIPTION

     The  open_memstream()  function  opens a stream for writing to a memory
     buffer.  The function dynamically allocates the buffer, and the  buffer
     automatically  grows  as  needed.   Initially, the buffer has a size of
     zero.  After closing the stream, the caller should free(3) this buffer.
     The locations pointed to by ptr and sizeloc are used to report, respec-
     tively, the current location and the size of the buffer.  The locations
     referred  to  by  these  pointers  are  updated each time the stream is
     flushed (fflush(3)) and when the stream is closed  (fclose(3)).   These
     values remain valid only as long as the caller performs no further out-
     put on the stream.  If further output is  performed,  then  the  stream
     must again be flushed before trying to access these values.
     A  null  byte is maintained at the end of the buffer.  This byte is not
     included in the size value stored at sizeloc.
     The stream maintains the notion of a current position,  which  is  ini-
     tially zero (the start of the buffer).  Each write operation implicitly
     adjusts the buffer position.   The  stream's  buffer  position  can  be
     explicitly changed with fseek(3) or fseeko(3).  Moving the buffer posi-
     tion past the end of the data already  written  fills  the  intervening
     space with null characters.
     The  open_wmemstream()  is similar to open_memstream(), but operates on
     wide characters instead of bytes.

RETURN VALUE

     Upon  successful  completion,  open_memstream()  and  open_wmemstream()
     return a FILE pointer.  Otherwise, NULL is returned and errno is set to
     indicate the error.

VERSIONS

     open_memstream() was already  available  in  glibc  1.0.x.   open_wmem-
     stream() is available since glibc 2.4.

ATTRIBUTES

     For   an   explanation   of   the  terms  used  in  this  section,  see
     attributes(7).
     +------------------+---------------+---------+
     |Interface         | Attribute     | Value   |
     +------------------+---------------+---------+
     |open_memstream(), | Thread safety | MT-Safe |
     |open_wmemstream   |               |         |
     +------------------+---------------+---------+

CONFORMING TO

     POSIX.1-2008.  These functions are not specified in  POSIX.1-2001,  and
     are not widely available on other systems.

NOTES

     There is no file descriptor associated with the file stream returned by
     these functions (i.e., fileno(3) will return an error if called on  the
     returned stream).

BUGS

     In  glibc  before version 2.7, seeking past the end of a stream created
     by open_memstream() does not enlarge the buffer; instead  the  fseek(3)
     call fails, returning -1.

EXAMPLE

     See fmemopen(3).

SEE ALSO

     fmemopen(3), fopen(3), setbuf(3)

COLOPHON

     This  page  is  part of release 4.16 of the Linux man-pages project.  A
     description of the project, information about reporting bugs,  and  the
     latest     version     of     this    page,    can    be    found    at
     https://www.kernel.org/doc/man-pages/.

GNU 2017-09-15 OPEN_MEMSTREAM(3)

/data/webs/external/dokuwiki/data/pages/man/open_memstream.txt · Last modified: 2019/05/17 09:47 by 127.0.0.1

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki