Mercurial > hg > octave-nkf > gnulib-hg
annotate lib/safe-read.c @ 1320:abeaa95922bd
(noinst_HEADERS): Add safe-read.h.
author | Jim Meyering <jim@meyering.net> |
---|---|
date | Sat, 11 Apr 1998 17:53:09 +0000 |
parents | 2f2ee0189bb5 |
children | 5cd2eca6193e |
rev | line source |
---|---|
182 | 1 /* safe-read.c -- an interface to read that retries after interrupts |
1320
abeaa95922bd
(noinst_HEADERS): Add safe-read.h.
Jim Meyering <jim@meyering.net>
parents:
728
diff
changeset
|
2 Copyright (C) 1993, 1994, 1998 Free Software Foundation, Inc. |
182 | 3 |
4 This program is free software; you can redistribute it and/or modify | |
5 it under the terms of the GNU General Public License as published by | |
6 the Free Software Foundation; either version 2, or (at your option) | |
7 any later version. | |
8 | |
9 This program 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 General Public License for more details. | |
13 | |
14 You should have received a copy of the GNU General Public License | |
650
b4ef1c1a0171
update FSF address in copyright
Jim Meyering <jim@meyering.net>
parents:
642
diff
changeset
|
15 along with this program; if not, write to the Free Software Foundation, |
b4ef1c1a0171
update FSF address in copyright
Jim Meyering <jim@meyering.net>
parents:
642
diff
changeset
|
16 Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
183 | 17 */ |
182 | 18 |
728 | 19 #if HAVE_CONFIG_H |
642
02a593f698b9
Indent nested CPP-directives.
Jim Meyering <jim@meyering.net>
parents:
371
diff
changeset
|
20 # include <config.h> |
182 | 21 #endif |
22 | |
23 #include <sys/types.h> | |
24 | |
728 | 25 #if HAVE_UNISTD_H |
642
02a593f698b9
Indent nested CPP-directives.
Jim Meyering <jim@meyering.net>
parents:
371
diff
changeset
|
26 # include <unistd.h> |
182 | 27 #endif |
28 | |
29 #include <errno.h> | |
371 | 30 #ifndef errno |
182 | 31 extern int errno; |
32 #endif | |
33 | |
1320
abeaa95922bd
(noinst_HEADERS): Add safe-read.h.
Jim Meyering <jim@meyering.net>
parents:
728
diff
changeset
|
34 #include "safe-read.h" |
abeaa95922bd
(noinst_HEADERS): Add safe-read.h.
Jim Meyering <jim@meyering.net>
parents:
728
diff
changeset
|
35 |
371 | 36 /* Read LEN bytes at PTR from descriptor DESC, retrying if interrupted. |
37 Return the actual number of bytes read, zero for EOF, or negative | |
38 for an error. */ | |
179 | 39 |
1320
abeaa95922bd
(noinst_HEADERS): Add safe-read.h.
Jim Meyering <jim@meyering.net>
parents:
728
diff
changeset
|
40 ssize_t |
abeaa95922bd
(noinst_HEADERS): Add safe-read.h.
Jim Meyering <jim@meyering.net>
parents:
728
diff
changeset
|
41 safe_read (int desc, char *ptr, size_t len) |
179 | 42 { |
1320
abeaa95922bd
(noinst_HEADERS): Add safe-read.h.
Jim Meyering <jim@meyering.net>
parents:
728
diff
changeset
|
43 ssize_t n_chars; |
371 | 44 |
45 if (len <= 0) | |
46 return len; | |
47 | |
179 | 48 #ifdef EINTR |
371 | 49 do |
50 { | |
51 n_chars = read (desc, ptr, len); | |
52 } | |
53 while (n_chars < 0 && errno == EINTR); | |
54 #else | |
55 n_chars = read (desc, ptr, len); | |
179 | 56 #endif |
371 | 57 |
58 return n_chars; | |
179 | 59 } |