(root)/
tar-1.35/
gnu/
safe-write.h
       1  /* An interface to write() that retries after interrupts.
       2     Copyright (C) 2002, 2009-2023 Free Software Foundation, Inc.
       3  
       4     This file is free software: you can redistribute it and/or modify
       5     it under the terms of the GNU Lesser General Public License as
       6     published by the Free Software Foundation; either version 2.1 of the
       7     License, or (at your option) any later version.
       8  
       9     This file is distributed in the hope that it will be useful,
      10     but WITHOUT ANY WARRANTY; without even the implied warranty of
      11     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
      12     GNU Lesser General Public License for more details.
      13  
      14     You should have received a copy of the GNU Lesser General Public License
      15     along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
      16  
      17  /* Some system calls may be interrupted and fail with errno = EINTR in the
      18     following situations:
      19       - The process is stopped and restarted (signal SIGSTOP and SIGCONT, user
      20         types Ctrl-Z) on some platforms: Mac OS X.
      21       - The process receives a signal for which a signal handler was installed
      22         with sigaction() with an sa_flags field that does not contain
      23         SA_RESTART.
      24       - The process receives a signal for which a signal handler was installed
      25         with signal() and for which no call to siginterrupt(sig,0) was done,
      26         on some platforms: AIX, HP-UX, IRIX, OSF/1, Solaris.
      27  
      28     This module provides a wrapper around write() that handles EINTR.  */
      29  
      30  #include <stddef.h>
      31  
      32  #define SAFE_WRITE_ERROR ((size_t) -1)
      33  
      34  /* Write up to COUNT bytes at BUF to descriptor FD, retrying if interrupted.
      35     Return the actual number of bytes written, zero for EOF, or SAFE_WRITE_ERROR
      36     upon error.  */
      37  extern size_t safe_write (int fd, const void *buf, size_t count);