From 45dd602433099e8bbf6924a0896655c693057c69 Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Sat, 5 Jul 2003 07:21:19 +0000 Subject: [PATCH] Don't include print-copyr.h. (prepare_input_buffer): Renamed from prepare_record_buffer. New arg FD. All uses changed. Do not read more than INT_MAX bytes at once, since it breaks on some brain damaged Tru64 hosts. Do not mix int and size_t pointers. Divide size by two when retrying instead of subtracting 1024; for speed. (main): Use gettext to translate (C), not print_copyright. --- src/rmt.c | 29 ++++++++++++++--------------- 1 file changed, 14 insertions(+), 15 deletions(-) diff --git a/src/rmt.c b/src/rmt.c index 0fe166b..e49f3c2 100644 --- a/src/rmt.c +++ b/src/rmt.c @@ -1,7 +1,7 @@ /* Remote connection server. - Copyright (C) 1994, 1995, 1996, 1997, 1999, 2000, 2001 Free Software - Foundation, Inc. + Copyright (C) 1994, 1995, 1996, 1997, 1999, 2000, 2001, 2003 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 the @@ -32,7 +32,6 @@ MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ #include "system.h" -#include #include #include #include @@ -130,7 +129,7 @@ get_string (char *string) } static void -prepare_record_buffer (size_t size) +prepare_input_buffer (int fd, size_t size) { if (size <= allocated_size) return; @@ -151,14 +150,14 @@ prepare_record_buffer (size_t size) allocated_size = size; #ifdef SO_RCVBUF - while (size > 1024 && - (setsockopt (STDIN_FILENO, SOL_SOCKET, SO_RCVBUF, - (char *) &size, sizeof size) - < 0)) - size -= 1024; -#else - /* FIXME: I do not see any purpose to the following line... Sigh! */ - size = 1 + ((size - 1) % 1024); + if (0 <= fd) + { + int isize = size < INT_MAX ? size : INT_MAX; + while (setsockopt (fd, SOL_SOCKET, SO_RCVBUF, + (char *) &isize, sizeof isize) + && 1024 < isize) + isize >>= 1; + } #endif } @@ -295,7 +294,7 @@ main (int argc, char *const *argv) case 'v': { printf ("rmt (GNU %s) %s\n", PACKAGE, VERSION); - print_copyright ("2001 Free Software Foundation, Inc."); + printf (_("Copyright (C) %d Free Software Foundation, Inc.\n"), 2003); puts (_("\ This program comes with NO WARRANTY, to the extent permitted by law.\n\ You may redistribute it under the terms of the GNU General Public License;\n\ @@ -440,7 +439,7 @@ top: size = atol (count_string); DEBUG1 ("rmtd: W %s\n", count_string); - prepare_record_buffer (size); + prepare_input_buffer (STDIN_FILENO, size); for (counter = 0; counter < size; counter += status) { status = safe_read (STDIN_FILENO, &record_buffer[counter], @@ -468,7 +467,7 @@ top: DEBUG1 ("rmtd: R %s\n", count_string); size = atol (count_string); - prepare_record_buffer (size); + prepare_input_buffer (-1, size); status = safe_read (tape, record_buffer, size); if (status < 0) goto ioerror; -- 2.45.2