Blame libio/strfile.h

Packit Service 82fcde
/* Copyright (C) 1993-2018 Free Software Foundation, Inc.
Packit Service 82fcde
   This file is part of the GNU C Library.
Packit Service 82fcde
Packit Service 82fcde
   The GNU C Library is free software; you can redistribute it and/or
Packit Service 82fcde
   modify it under the terms of the GNU Lesser General Public
Packit Service 82fcde
   License as published by the Free Software Foundation; either
Packit Service 82fcde
   version 2.1 of the License, or (at your option) any later version.
Packit Service 82fcde
Packit Service 82fcde
   The GNU C Library is distributed in the hope that it will be useful,
Packit Service 82fcde
   but WITHOUT ANY WARRANTY; without even the implied warranty of
Packit Service 82fcde
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
Packit Service 82fcde
   Lesser General Public License for more details.
Packit Service 82fcde
Packit Service 82fcde
   You should have received a copy of the GNU Lesser General Public
Packit Service 82fcde
   License along with the GNU C Library; if not, see
Packit Service 82fcde
   <http://www.gnu.org/licenses/>.
Packit Service 82fcde
Packit Service 82fcde
   As a special exception, if you link the code in this file with
Packit Service 82fcde
   files compiled with a GNU compiler to produce an executable,
Packit Service 82fcde
   that does not cause the resulting executable to be covered by
Packit Service 82fcde
   the GNU Lesser General Public License.  This exception does not
Packit Service 82fcde
   however invalidate any other reasons why the executable file
Packit Service 82fcde
   might be covered by the GNU Lesser General Public License.
Packit Service 82fcde
   This exception applies to code released by its copyright holders
Packit Service 82fcde
   in files containing the exception.  */
Packit Service 82fcde
Packit Service 82fcde
#include <stdio.h>
Packit Service 82fcde
#include "libioP.h"
Packit Service 82fcde
Packit Service 82fcde
typedef void *(*_IO_alloc_type) (size_t);
Packit Service 82fcde
typedef void (*_IO_free_type) (void*);
Packit Service 82fcde
Packit Service 82fcde
struct _IO_str_fields
Packit Service 82fcde
{
Packit Service 82fcde
  /* These members are preserved for ABI compatibility.  The glibc
Packit Service 82fcde
     implementation always calls malloc/free for user buffers if
Packit Service 82fcde
     _IO_USER_BUF or _IO_FLAGS2_USER_WBUF are not set.  */
Packit Service 82fcde
  _IO_alloc_type _allocate_buffer_unused;
Packit Service 82fcde
  _IO_free_type _free_buffer_unused;
Packit Service 82fcde
};
Packit Service 82fcde
Packit Service 82fcde
/* This is needed for the Irix6 N32 ABI, which has a 64 bit off_t type,
Packit Service 82fcde
   but a 32 bit pointer type.  In this case, we get 4 bytes of padding
Packit Service 82fcde
   after the vtable pointer.  Putting them in a structure together solves
Packit Service 82fcde
   this problem.  */
Packit Service 82fcde
Packit Service 82fcde
struct _IO_streambuf
Packit Service 82fcde
{
Packit Service 82fcde
  FILE _f;
Packit Service 82fcde
  const struct _IO_jump_t *vtable;
Packit Service 82fcde
};
Packit Service 82fcde
Packit Service 82fcde
typedef struct _IO_strfile_
Packit Service 82fcde
{
Packit Service 82fcde
  struct _IO_streambuf _sbf;
Packit Service 82fcde
  struct _IO_str_fields _s;
Packit Service 82fcde
} _IO_strfile;
Packit Service 82fcde
Packit Service 82fcde
/* frozen: set when the program has requested that the array object not
Packit Service 82fcde
   be altered, reallocated, or freed. */
Packit Service 82fcde
#define _IO_STR_FROZEN(FP) ((FP)->_f._flags & _IO_USER_BUF)
Packit Service 82fcde
Packit Service 82fcde
typedef struct
Packit Service 82fcde
{
Packit Service 82fcde
  _IO_strfile f;
Packit Service 82fcde
  /* This is used for the characters which do not fit in the buffer
Packit Service 82fcde
     provided by the user.  */
Packit Service 82fcde
  char overflow_buf[64];
Packit Service 82fcde
} _IO_strnfile;
Packit Service 82fcde
Packit Service 82fcde
extern const struct _IO_jump_t _IO_strn_jumps attribute_hidden;
Packit Service 82fcde
Packit Service 82fcde
Packit Service 82fcde
typedef struct
Packit Service 82fcde
{
Packit Service 82fcde
  _IO_strfile f;
Packit Service 82fcde
  /* This is used for the characters which do not fit in the buffer
Packit Service 82fcde
     provided by the user.  */
Packit Service 82fcde
  wchar_t overflow_buf[64];
Packit Service 82fcde
} _IO_wstrnfile;
Packit Service 82fcde
Packit Service 82fcde
extern const struct _IO_jump_t _IO_wstrn_jumps attribute_hidden;