Blame gnu/safe-read.h

Packit 1ef1a9
/* An interface to read() that retries after interrupts.
Packit 1ef1a9
   Copyright (C) 2002, 2006, 2009-2015 Free Software Foundation, Inc.
Packit 1ef1a9
Packit 1ef1a9
   This program is free software: you can redistribute it and/or modify
Packit 1ef1a9
   it under the terms of the GNU General Public License as published by
Packit 1ef1a9
   the Free Software Foundation; either version 3 of the License, or
Packit 1ef1a9
   (at your option) any later version.
Packit 1ef1a9
Packit 1ef1a9
   This program is distributed in the hope that it will be useful,
Packit 1ef1a9
   but WITHOUT ANY WARRANTY; without even the implied warranty of
Packit 1ef1a9
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
Packit 1ef1a9
   GNU General Public License for more details.
Packit 1ef1a9
Packit 1ef1a9
   You should have received a copy of the GNU General Public License
Packit 1ef1a9
   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
Packit 1ef1a9
Packit 1ef1a9
/* Some system calls may be interrupted and fail with errno = EINTR in the
Packit 1ef1a9
   following situations:
Packit 1ef1a9
     - The process is stopped and restarted (signal SIGSTOP and SIGCONT, user
Packit 1ef1a9
       types Ctrl-Z) on some platforms: Mac OS X.
Packit 1ef1a9
     - The process receives a signal for which a signal handler was installed
Packit 1ef1a9
       with sigaction() with an sa_flags field that does not contain
Packit 1ef1a9
       SA_RESTART.
Packit 1ef1a9
     - The process receives a signal for which a signal handler was installed
Packit 1ef1a9
       with signal() and for which no call to siginterrupt(sig,0) was done,
Packit 1ef1a9
       on some platforms: AIX, HP-UX, IRIX, OSF/1, Solaris.
Packit 1ef1a9
Packit 1ef1a9
   This module provides a wrapper around read() that handles EINTR.  */
Packit 1ef1a9
Packit 1ef1a9
#include <stddef.h>
Packit 1ef1a9
Packit 1ef1a9
#ifdef __cplusplus
Packit 1ef1a9
extern "C" {
Packit 1ef1a9
#endif
Packit 1ef1a9
Packit 1ef1a9
Packit 1ef1a9
#define SAFE_READ_ERROR ((size_t) -1)
Packit 1ef1a9
Packit 1ef1a9
/* Read up to COUNT bytes at BUF from descriptor FD, retrying if interrupted.
Packit 1ef1a9
   Return the actual number of bytes read, zero for EOF, or SAFE_READ_ERROR
Packit 1ef1a9
   upon error.  */
Packit 1ef1a9
extern size_t safe_read (int fd, void *buf, size_t count);
Packit 1ef1a9
Packit 1ef1a9
Packit 1ef1a9
#ifdef __cplusplus
Packit 1ef1a9
}
Packit 1ef1a9
#endif