From: Paul Eggert Date: Tue, 29 Jun 1999 02:26:25 +0000 (+0000) Subject: ANSIfy. X-Git-Url: https://git.dogcows.com/gitweb?a=commitdiff_plain;h=22954a6f8a13334f556cba68baf8276a94cbe5bc;p=chaz%2Ftar ANSIfy. --- diff --git a/lib/full-read.c b/lib/full-read.c index 1c6ead8..d20e649 100644 --- a/lib/full-read.c +++ b/lib/full-read.c @@ -1,5 +1,5 @@ /* full-read.c -- an interface to read that retries after interrupts - Copyright (C) 1993, 1994, 1997 Free Software Foundation, Inc. + Copyright (C) 1993, 1994, 1997, 1999 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -35,26 +35,16 @@ extern int errno; Return the actual number of bytes read, zero for EOF, or negative for an error. */ -int -full_read (desc, ptr, len) - int desc; - char *ptr; - size_t len; +ssize_t +full_read (int desc, char *ptr, size_t len) { - int n_chars; - - if (len <= 0) - return len; - -#ifdef EINTR - do + for (;;) { - n_chars = read (desc, ptr, len); - } - while (n_chars < 0 && errno == EINTR); -#else - n_chars = read (desc, ptr, len); + ssize_t n = read (desc, ptr, len); +#ifdef EINTR + if (n < 0 && errno == EINTR) + continue; #endif - - return n_chars; + return n; + } } diff --git a/lib/full-write.c b/lib/full-write.c index ac27d62..062f2b2 100644 --- a/lib/full-write.c +++ b/lib/full-write.c @@ -1,5 +1,5 @@ /* full-write.c -- an interface to write that retries after interrupts - Copyright (C) 1993, 1994, 1997, 1998 Free Software Foundation, Inc. + Copyright (C) 1993, 1994, 1997, 1998, 1999 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -36,15 +36,14 @@ extern int errno; /* Write LEN bytes at PTR to descriptor DESC, retrying if interrupted. Return LEN upon success, write's (negative) error code otherwise. */ -int +ssize_t full_write (int desc, const char *ptr, size_t len) { - int total_written; + ssize_t total_written = 0; - total_written = 0; while (len > 0) { - int written = write (desc, ptr, len); + ssize_t written = write (desc, ptr, len); /* FIXME: write on my slackware Linux 1.2.13 returns zero when I try to write more data than there is room on a floppy disk. This puts dd into an infinite loop. Reproduce with