(root)/
glibc-2.38/
stdio-common/
printf_buffer_to_file.h
       1  /* Multibyte and wide printf buffers writing data to a FILE * stream.
       2     Copyright (C) 2022-2023 Free Software Foundation, Inc.
       3     This file is part of the GNU C Library.
       4  
       5     The GNU C Library is free software; you can redistribute it and/or
       6     modify it under the terms of the GNU Lesser General Public
       7     License as published by the Free Software Foundation; either
       8     version 2.1 of the License, or (at your option) any later version.
       9  
      10     The GNU C Library is distributed in the hope that it will be useful,
      11     but WITHOUT ANY WARRANTY; without even the implied warranty of
      12     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
      13     Lesser General Public License for more details.
      14  
      15     You should have received a copy of the GNU Lesser General Public
      16     License along with the GNU C Library; if not, see
      17     <https://www.gnu.org/licenses/>.  */
      18  
      19  #ifndef PRINTF_BUFFER_TO_FILE_H
      20  #define PRINTF_BUFFER_TO_FILE_H
      21  
      22  #include <bits/types/FILE.h>
      23  #include <printf_buffer.h>
      24  
      25  struct __printf_buffer_to_file
      26  {
      27    struct __printf_buffer base;
      28    FILE *fp;
      29  
      30    /* Staging buffer.  Used if fp does not have any available buffer
      31       space.  */
      32    char stage[PRINTF_BUFFER_SIZE_TO_FILE_STAGE];
      33  };
      34  
      35  /* Initializes *BUF to write data to FP.  */
      36  void __printf_buffer_to_file_init (struct __printf_buffer_to_file *buf,
      37                                     FILE *fp) attribute_hidden;
      38  
      39  /* Transfers any pending data in BUF to BUF->FP.  The return value
      40     follows the printf convention (number bytes written; or -1 for error).  */
      41  int __printf_buffer_to_file_done (struct __printf_buffer_to_file *buf)
      42    attribute_hidden;
      43  
      44  /* Wide version below.  */
      45  
      46  struct __wprintf_buffer_to_file
      47  {
      48    struct __wprintf_buffer base;
      49    FILE *fp;
      50    wchar_t stage[PRINTF_BUFFER_SIZE_TO_FILE_STAGE];
      51  };
      52  void __wprintf_buffer_to_file_init (struct __wprintf_buffer_to_file *buf,
      53                                      FILE *fp) attribute_hidden;
      54  int __wprintf_buffer_to_file_done (struct __wprintf_buffer_to_file *buf)
      55    attribute_hidden;
      56  
      57  #endif /* PRINTF_BUFFER_TO_FILE_H */