va_end(ap);
return retcode;
}
+
+
+/*
+** read replacement that ignores EINTR.
+*/
+ssize_t
+s_read(int fd, char *buf, size_t len)
+{
+ ssize_t code;
+
+ do {
+ code = read(fd, buf, len);
+ } while (code < 0 && errno == EINTR);
+ return code;
+}
char *s_strdup(const char *);
int s_open(const char *, int, ...);
int s_snprintf(char *, size_t, const char *, ...);
+ssize_t s_read(int, char *, size_t);
/* Used as the interface to the kernel routines. This matches the kernel
struct in pidentd 3.x except that we omit the av parameter, since none of