Blame sysdeps/solaris/safeio.c

Packit Service 407539
/* Copyright (C) 1999 Drazen Kacar
Packit Service 407539
   This file is part of LibGTop 1.0.
Packit Service 407539
Packit Service 407539
   Contributed by Drazen Kacar <dave@srce.hr>, May 1999.
Packit Service 407539
Packit Service 407539
   LibGTop is free software; you can redistribute it and/or modify it
Packit Service 407539
   under the terms of the GNU General Public License as published by
Packit Service 407539
   the Free Software Foundation; either version 2 of the License,
Packit Service 407539
   or (at your option) any later version.
Packit Service 407539
Packit Service 407539
   LibGTop is distributed in the hope that it will be useful, but WITHOUT
Packit Service 407539
   ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
Packit Service 407539
   FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
Packit Service 407539
   for more details.
Packit Service 407539
Packit Service 407539
   You should have received a copy of the GNU General Public License
Packit Service 407539
   along with LibGTop; see the file COPYING. If not, write to the
Packit Service 407539
   Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
Packit Service 407539
   Boston, MA 02110-1301, USA.
Packit Service 407539
*/
Packit Service 407539
Packit Service 407539
#include <config.h>
Packit Service 407539
#include <unistd.h>
Packit Service 407539
#include <fcntl.h>
Packit Service 407539
#include <sys/types.h>
Packit Service 407539
#include <sys/stat.h>
Packit Service 407539
#include <dirent.h>
Packit Service 407539
#include <errno.h>
Packit Service 407539
Packit Service 407539
#include "safeio.h"
Packit Service 407539
Packit Service 407539
int
Packit Service 407539
s_open(const char *file, int mode)
Packit Service 407539
{
Packit Service 407539
   int fd;
Packit Service 407539
Packit Service 407539
   do {
Packit Service 407539
      fd = open(file, mode);
Packit Service 407539
   } while(fd < 0 && errno == EINTR);
Packit Service 407539
   return fd;
Packit Service 407539
}
Packit Service 407539
Packit Service 407539
int
Packit Service 407539
s_stat(const char *path, struct stat *buf)
Packit Service 407539
{
Packit Service 407539
   int status;
Packit Service 407539
Packit Service 407539
   do {
Packit Service 407539
      status = stat(path, buf);
Packit Service 407539
   } while(status < 0 && errno == EINTR);
Packit Service 407539
   return status;
Packit Service 407539
}
Packit Service 407539
Packit Service 407539
int
Packit Service 407539
s_close(int fd)
Packit Service 407539
{
Packit Service 407539
   int status;
Packit Service 407539
Packit Service 407539
   do {
Packit Service 407539
      status = close(fd);
Packit Service 407539
   } while(status < 0 && errno == EINTR);
Packit Service 407539
   return status;
Packit Service 407539
}
Packit Service 407539
Packit Service 407539
ssize_t
Packit Service 407539
s_pread(int fd, void *buf, size_t nbytes, off_t offset)
Packit Service 407539
{
Packit Service 407539
   ssize_t len;
Packit Service 407539
Packit Service 407539
   /* Now, why doesn't the pread(2) man page say anything about pread()
Packit Service 407539
      return values? Can it read less bytes than requested? */
Packit Service 407539
Packit Service 407539
   do {
Packit Service 407539
      len = pread(fd, buf, nbytes, offset);
Packit Service 407539
   } while(len < 0 && errno == EINTR);
Packit Service 407539
   return len;
Packit Service 407539
}
Packit Service 407539
Packit Service 407539
int s_closedir(DIR *dirp)
Packit Service 407539
{
Packit Service 407539
   int status;
Packit Service 407539
Packit Service 407539
   do {
Packit Service 407539
      status = closedir(dirp);
Packit Service 407539
   } while(status < 0 && errno == EINTR);
Packit Service 407539
   return status;
Packit Service 407539
}