]> Dogcows Code - chaz/tar/commitdiff
ANSIfy.
authorPaul Eggert <eggert@cs.ucla.edu>
Tue, 29 Jun 1999 02:26:25 +0000 (02:26 +0000)
committerPaul Eggert <eggert@cs.ucla.edu>
Tue, 29 Jun 1999 02:26:25 +0000 (02:26 +0000)
lib/full-read.c
lib/full-write.c

index 1c6ead82826ee0df8090e793333f24a59efd8704..d20e64904aee138322ac900f79693ae039fb70c8 100644 (file)
@@ -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;
+    }
 }
index ac27d620959ccea364e9af36028c4f9342eb3a7f..062f2b2c6cb7ea2e1b93dbe26434cb04db7e5d2c 100644 (file)
@@ -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
This page took 0.023526 seconds and 4 git commands to generate.