]> sjero.net Git - wget/blobdiff - src/rbuf.c
[svn] Renamed xread/xwrite/xclose to fd_read/fd_write/fd_close. The "x" prefix is
[wget] / src / rbuf.c
index b8fefb138e97f4c14261340d78b011d3b4abf4c2..b50e0e2adeb00fa02fe0d40dde20a1c65345eddc 100644 (file)
@@ -1,25 +1,42 @@
 /* Buffering read.
    Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc.
 
-This program is free software; you can redistribute it and/or modify
+This file is part of GNU Wget.
+
+GNU Wget is free software; you can redistribute it and/or modify
 it under the terms of the GNU General Public License as published by
 the Free Software Foundation; either version 2 of the License, or
 (at your option) any later version.
 
-This program is distributed in the hope that it will be useful,
+GNU Wget is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 GNU General Public License for more details.
 
 You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
+along with Wget; if not, write to the Free Software
+Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+In addition, as a special exception, the Free Software Foundation
+gives permission to link the code of its release of Wget with the
+OpenSSL project's "OpenSSL" library (or with modified versions of it
+that use the same license as the "OpenSSL" library), and distribute
+the linked executables.  You must obey the GNU General Public License
+in all respects for all of the code used other than "OpenSSL".  If you
+modify this file, you may extend this exception to your version of the
+file, but you are not obligated to do so.  If you do not wish to do
+so, delete this exception statement from your version.  */
 
 /* This is a simple implementation of buffering IO-read functions.  */
 
 #include <config.h>
 
 #include <stdio.h>
+#ifdef HAVE_STRING_H
+# include <string.h>
+#else
+# include <strings.h>
+#endif
 
 #include "wget.h"
 #include "rbuf.h"
@@ -45,6 +62,12 @@ rbuf_uninitialize (struct rbuf *rbuf)
   rbuf->fd = -1;
 }
 
+int
+rbuf_read_bufferful (struct rbuf *rbuf)
+{
+  return fd_read (rbuf->fd, rbuf->buffer, sizeof (rbuf->buffer), -1);
+}
+
 /* Currently unused -- see RBUF_READCHAR.  */
 #if 0
 /* Function version of RBUF_READCHAR.  */
@@ -64,7 +87,7 @@ rbuf_peek (struct rbuf *rbuf, char *store)
       int res;
       rbuf->buffer_pos = rbuf->buffer;
       rbuf->buffer_left = 0;
-      res = iread (rbuf->fd, rbuf->buffer, sizeof (rbuf->buffer));
+      res = fd_read (rbuf->fd, rbuf->buffer, sizeof (rbuf->buffer), -1);
       if (res <= 0)
        return res;
       rbuf->buffer_left = res;
@@ -73,6 +96,8 @@ rbuf_peek (struct rbuf *rbuf, char *store)
   return 1;
 }
 
+#define MIN(p,q) (((p) <= (q)) ? (p) : (q))
+
 /* Flush RBUF's buffer to WHERE.  Flush MAXSIZE bytes at most.
    Returns the number of bytes actually copied.  If the buffer is
    empty, 0 is returned.  */
@@ -83,7 +108,7 @@ rbuf_flush (struct rbuf *rbuf, char *where, int maxsize)
     return 0;
   else
     {
-      int howmuch = MINVAL (rbuf->buffer_left, maxsize);
+      int howmuch = MIN (rbuf->buffer_left, maxsize);
 
       if (where)
        memcpy (where, rbuf->buffer_pos, howmuch);