1 /* vi: set sw=4 ts=4: */
5 * Copyright (C) 1999-2004 by Erik Andersen <andersen@codepoet.org>
7 * Licensed under GPLv2 or later, see file LICENSE in this source tree.
11 ssize_t FAST_FUNC
safe_read(int fd
, void *buf
, size_t count
)
16 n
= read(fd
, buf
, count
);
17 } while (n
< 0 && errno
== EINTR
);
23 * Read all of the supplied buffer from a file.
24 * This does multiple reads as necessary.
25 * Returns the amount read, or -1 on an error.
26 * A short read is returned on an end of file.
28 ssize_t FAST_FUNC
full_read(int fd
, void *buf
, size_t len
)
36 cc
= safe_read(fd
, buf
, len
);
40 /* we already have some! */
41 /* user can do another read to know the error code */
44 return cc
; /* read() returns -1 on failure. */
48 buf
= ((char *)buf
) + cc
;
56 ssize_t FAST_FUNC
read_close(int fd
, void *buf
, size_t size
)
59 size
= full_read(fd
, buf
, size
);
66 ssize_t FAST_FUNC
open_read_close(const char *filename
, void *buf
, size_t size
)
68 int fd
= open(filename
, O_RDONLY
);
71 return read_close(fd
, buf
, size
);