debian/0000700000000000000000000000000011773311073007157 5ustar debian/compat0000600000000000000000000000000211770576672010376 0ustar 8 debian/control0000600000000000000000000000136311773311072010566 0ustar Source: buffer Section: utils Priority: optional Maintainer: Martin Buck Standards-Version: 3.9.3.0 Build-Depends: debhelper (>= 8) Package: buffer Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends} Description: Buffering/reblocking program for tape backups, printing, etc. Buffer implements double buffering and can be used to keep backup tapes streaming or printers printing. It can also be used to convert a data stream to a given output blocksize. . Buffer uses shared memory to convert a variable input data rate to a constant output data rate. It is typically used in a pipe between a backup program and the tape device, but there are also other applications like buffering printer data in lpd's input filter. debian/patches/0000755000000000000000000000000011773310434010620 5ustar debian/patches/no-option-parsing-buffer-overrun-1235430000600000000000000000000000051311773247603017630 0ustar --- a/buffer.c +++ b/buffer.c @@ -935,13 +935,12 @@ do_size( arg ) char *arg; { - char format[ 20 ]; - int ret; + int ret = 0; - *format = '\0'; - sscanf( arg, "%d%s", &ret, format ); + char unit = '\0'; + sscanf( arg, "%d%c", &ret, &unit ); - switch( *format ){ + switch( unit ){ case 'm': case 'M': ret = ret K K; debian/patches/fix-num-free-blocks-2249840000600000000000000000000000145711773067322015076 0ustar --- a/buffer.c +++ b/buffer.c @@ -528,8 +528,17 @@ pbuffer->blocks_free_lock = 1; /* start this off so lock() can be called on it for each block * till all the blocks are used up */ + /* Initializing the semaphore to "blocks - 1" causes a hang when using option + * "-p 100" because it always keeps one block free, so we'll never reach 100% fill + * level. However, there doesn't seem to be a good reason to keep one block free, + * so we initialize the semaphore to "blocks" instead. + * 2004-01-11 + */ +#if 0 sem_set( pbuffer->semid, pbuffer->blocks_free_lock, blocks - 1 ); - +#else + sem_set( pbuffer->semid, pbuffer->blocks_free_lock, blocks ); +#endif /* Detattach the shared memory so the fork doesnt do anything odd */ shmdt( (char *)pbuffer ); pbuffer = NO_BUFFER; debian/patches/document-buffer-limits0000600000000000000000000000163411773260772015134 0ustar --- a/buffer.man +++ b/buffer.man @@ -130,6 +130,25 @@ $ \fBtar cf - . | buffer | .br \ \ \ rsh somehost 'buffer -S 500K -p 75 > /dev/rst0'\fP +.SH BUFFER LIMITS +There are 2 limits in +.I buffer +affecting the maximum total buffer size: The maximum number of blocks (2048) +and the maximum size of a block (512kB). This results in a maximum total +buffer size of 1GB. +.PP + +Note that there is also a kernel limit for the maximum size of a shared +memory segment (used by +.I buffer +internally) which is typically much lower than the limits in +.IR buffer . +So if +.I buffer +complains about not being able to create a shared memory segment, this limit +might have to be raised using the command \fBsysctl kernel.shmmax=\fP\fIXXX\fP (see also +sysctl(1) and proc(5)). + .SH BUGS Internally, for printing purposes, buffer counts in terms of the number of kilobytes output. If the blocksize you use is not a whole debian/patches/typo-fixes0000600000000000000000000000677411773247710012666 0ustar --- a/buffer.man +++ b/buffer.man @@ -37,7 +37,8 @@ Use the given file as the output file. The default is stdout. .TP .B \-S size -After every chunk this size has been writen print out how much been writen so far. +After every chunk of this size has been written, print out how much has +been written so far. Also prints the total throughput. By default this is not set. .TP .B \-s size @@ -67,13 +68,13 @@ .TP .B \-u microseconds After every write pause for this many microseconds. Defaults to zero. -(Suprisingly a small sleep, 100 usecs, after each write can greatly enhance +(Surprisingly a small sleep, 100 usecs, after each write can greatly enhance throughput on some drives.) .TP .B \-B -Force each block writen to be padded out to the blocksize. This is needed by some tape +Force each block written to be padded out to the blocksize. This is needed by some tape and cartridge drives. Defaults to unpadded. This only affects the -last block writen. +last block written. .TP .B \-t On exiting print to stderr a brief message showing the total number of @@ -82,7 +83,7 @@ .B \-Z If reading/writing directly to a character device (like a tape drive) then after each gigabyte perform an lseek to the start of the file. -Use this flag with extreme care. If can only be used on devices where +Use this flag with extreme care. It can only be used on devices where an lseek does not rewind the tape but does reset the kernels position flags. It is used to allow more than 2 gigabytes to be written. .PP --- a/buffer.c +++ b/buffer.c @@ -78,7 +78,7 @@ * Christoph Wicki * * Revision 1.7 1992/07/23 20:42:03 lmjm - * Added 't' option to print total writen at end. + * Added 't' option to print total written at end. * * Revision 1.6 1992/04/07 19:57:30 lmjm * Added Kevins -B and -p options. @@ -93,7 +93,7 @@ * Make sofar printing size an option. * * Revision 1.3 90/05/15 23:27:46 lmjm - * Added -S option (show how much has been writen). + * Added -S option (show how much has been written). * Added -m option to specify how much shared memory to grab. * Now tries to fill this with blocks. * reader waits for writer to terminate and then frees the shared mem and sems. @@ -159,7 +159,7 @@ void pr_out(); void end_writer(); -/* When showing print a note every this many bytes writen */ +/* When showing print a note every this many bytes written */ int showevery = 0; #define PRINT_EVERY 10 K @@ -287,7 +287,7 @@ while( (c = getopt( argc, argv, "BS:Zdm:s:b:p:u:ti:o:z:" )) != -1 ){ switch( c ){ - case 't': /* Print to stderr the total no of bytes writen */ + case 't': /* Print to stderr the total no of bytes written */ print_total++; break; case 'u': /* pause after write for given microseconds */ @@ -384,8 +384,8 @@ fprintf( stderr, "Usage: %s [-B] [-t] [-S size] [-m memsize] [-b blocks] [-p percent] [-s blocksize] [-u pause] [-i infile] [-o outfile] [-z size]\n", progname ); fprintf( stderr, "-B = blocked device - pad out last block\n" ); - fprintf( stderr, "-t = show total amount writen at end\n" ); - fprintf( stderr, "-S size = show amount writen every size bytes\n" ); + fprintf( stderr, "-t = show total amount written at end\n" ); + fprintf( stderr, "-S size = show amount written every size bytes\n" ); fprintf( stderr, "-m size = size of shared mem chunk to grab\n" ); fprintf( stderr, "-b num = number of blocks in queue\n" ); fprintf( stderr, "-p percent = don't start writing until percent blocks filled\n" ); debian/patches/no-shmat-decl0000600000000000000000000000056511773071151013174 0ustar --- a/buffer.c +++ b/buffer.c @@ -126,9 +126,9 @@ static char *rcsid = "$Header: /a/swan/home/swan/staff/csg/lmjm/src/buffer/RCS/buffer.c,v 1.19 1995/08/24 17:46:28 lmjm Exp lmjm $"; #endif -#ifndef __alpha +#if !(defined(__linux__) || defined(__GLIBC__) || defined(__GNU__)) extern char *shmat(); -#endif /* __alpha */ +#endif /* General macros */ #define TRUE 1 debian/patches/plus-4tb-file-support0000600000000000000000000000443211773247174014651 0ustar --- a/buffer.c +++ b/buffer.c @@ -140,6 +140,14 @@ #define K *1024 #define M *1024*1024 +#if defined __GNUC__ || __STDC_VERSION__ >= 199901L +#define NUM_K_TYPE unsigned long long +#define NUM_K_FMT "llu" +#else +#define NUM_K_TYPE unsigned long +#define NUM_K_FMT "lu" +#endif + /* Some forward declarations */ void byee(); void start_reader_and_writer(); @@ -254,7 +262,7 @@ char print_total = 0; /* Number of K output */ -unsigned long outk = 0; +NUM_K_TYPE outk = 0; struct timeval starttime; @@ -771,7 +779,7 @@ } if( print_total ){ - fprintf( stderr, "Kilobytes Out %lu\n", outk ); + fprintf( stderr, "Kilobytes Out %" NUM_K_FMT "\n", outk ); } if( debug ) @@ -812,14 +820,14 @@ void write_block_to_stdout() { - static unsigned long out = 0; + unsigned long out = 0; static unsigned long last_gb = 0; - static unsigned long next_k = 0; + static NUM_K_TYPE next_k = 0; int written; if( next_k == 0 && showevery ){ if( debug > 3 ) - fprintf( stderr, "W: next_k = %lu showevery = %d\n", next_k, showevery ); + fprintf( stderr, "W: next_k = %" NUM_K_FMT " showevery = %d\n", next_k, showevery ); showevery = showevery / 1024; next_k = showevery; } @@ -827,7 +835,7 @@ if( (written = write( fdout, curr_block->data, curr_block->bytes )) != curr_block->bytes ){ report_proc(); perror( "write of data failed" ); - fprintf( stderr, "bytes to write=%d, bytes written=%d, total written %10luK\n", curr_block->bytes, written, outk ); + fprintf( stderr, "bytes to write=%d, bytes written=%d, total written %10" NUM_K_FMT "K\n", curr_block->bytes, written, outk ); byee( -1 ); } @@ -854,7 +862,7 @@ } if( showevery ){ if( debug > 3 ) - fprintf( stderr, "W: outk = %lu, next_k = %lu\n", + fprintf( stderr, "W: outk = %" NUM_K_FMT ", next_k = %" NUM_K_FMT "\n", outk, next_k ); if( outk >= next_k ){ pr_out(); @@ -991,10 +999,10 @@ } else { k_per_s = (outk / ms_delta) * 1000; } - fprintf( stderr, " %10luK, %10luK/s\r", outk, k_per_s ); + fprintf( stderr, " %10" NUM_K_FMT "K, %10luK/s\r", outk, k_per_s ); } else { if (outk) { - fprintf( stderr, " %10luK, ?K/s\r", outk ); + fprintf( stderr, " %10" NUM_K_FMT "K, ?K/s\r", outk ); } else { fprintf( stderr, " 0K, 0K/s\r"); } debian/patches/no-shmdt-before-fork-4281050000600000000000000000000000327111773074257015241 0ustar --- a/buffer.c +++ b/buffer.c @@ -507,14 +507,14 @@ get_buffer(); if( debug ) - fprintf( stderr, "%s pbuffer is 0x%08x, buffer_size is %d [%d x %d]\n", + fprintf( stderr, "%s pbuffer is 0x%08lx, buffer_size is %d [%d x %d]\n", proc_string, - (char *)pbuffer, buffer_size, blocks, blocksize ); + (unsigned long)pbuffer, buffer_size, blocks, blocksize ); #ifdef SYS5 - memset( (char *)pbuffer, '\0', buffer_size ); + memset( pbuffer->data_space, '\0', blocks * blocksize ); #else - bzero( (char *)pbuffer, buffer_size ); + bzero( pbuffer->data_space, blocks * blocksize ); #endif pbuffer->semid = -1; pbuffer->blocks_used_lock = -1; @@ -539,9 +539,20 @@ #else sem_set( pbuffer->semid, pbuffer->blocks_free_lock, blocks ); #endif + + /* Do not detach the shared memory, but leave it mapped. It will be inherited + * over fork just fine and this ensures that it's mapped at the same address + * both in the reader and writer. The original code did a shmdt() here followed + * by shmat() both in the reader and writer and relied on it getting mapped at + * the same address in both processes, which of course isn't guaranteed and + * actually did fail under some unknown circumstances on amd64. + * 2008-05-09 + */ +#if 0 /* Detattach the shared memory so the fork doesnt do anything odd */ shmdt( (char *)pbuffer ); pbuffer = NO_BUFFER; +#endif } void @@ -629,8 +640,6 @@ if( debug ) fprintf( stderr, "R: Entering reader\n" ); - get_buffer(); - while( 1 ){ get_next_free_block(); if( ! fill_block() ) @@ -723,8 +732,6 @@ blocks, maxfilled ); - get_buffer(); - while( 1 ){ if( !filled ) first_block = pbuffer->next_block_out; debian/patches/no-division-by-0-1235430000600000000000000000000000210711773310434014275 0ustar --- a/buffer.c +++ b/buffer.c @@ -976,17 +976,29 @@ ms_delta = (now.tv_sec - starttime.tv_sec) * 1000 + (now.tv_usec - starttime.tv_usec) / 1000; if (ms_delta) { - /* Use increased accuracy for small amounts of data */ + /* Use increased accuracy for small amounts of data, + * decreased accuracy for *huge* throughputs > 4.1GB/s + * to avoid division by 0. This will overflow if your + * machine's throughput exceeds 4TB/s - you deserve to + * lose if you're still using 32 bit longs on such a + * beast ;-) + * + */ if (outk < ULONG_MAX / 1000) { k_per_s = (outk * 1000) / ms_delta; - } else { + } else if (ms_delta >= 1000) { k_per_s = outk / (ms_delta / 1000); + } else { + k_per_s = (outk / ms_delta) * 1000; } + fprintf( stderr, " %10luK, %10luK/s\r", outk, k_per_s ); } else { - k_per_s = 0; + if (outk) { + fprintf( stderr, " %10luK, ?K/s\r", outk ); + } else { + fprintf( stderr, " 0K, 0K/s\r"); + } } - - fprintf( stderr, " %10luK, %10luK/s\r", outk, k_per_s ); } #ifdef SYS5 debian/patches/print-throughput0000600000000000000000000000227011773072464014107 0ustar --- a/buffer.c +++ b/buffer.c @@ -109,6 +109,9 @@ * Initial revision * */ +#include +#include +#include #include #include #include @@ -120,6 +123,7 @@ #include #include #include +#include #include "sem.h" #ifndef lint @@ -252,6 +256,8 @@ /* Number of K output */ unsigned long outk = 0; +struct timeval starttime; + int main( argc, argv ) int argc; @@ -262,6 +268,8 @@ set_handlers(); buffer_allocate(); + + gettimeofday(&starttime, NULL); start_reader_and_writer(); @@ -961,7 +969,24 @@ void pr_out() { - fprintf( stderr, " %10luK\r", outk ); + struct timeval now; + unsigned long ms_delta, k_per_s; + + gettimeofday(&now, NULL); + ms_delta = (now.tv_sec - starttime.tv_sec) * 1000 + + (now.tv_usec - starttime.tv_usec) / 1000; + if (ms_delta) { + /* Use increased accuracy for small amounts of data */ + if (outk < ULONG_MAX / 1000) { + k_per_s = (outk * 1000) / ms_delta; + } else { + k_per_s = outk / (ms_delta / 1000); + } + } else { + k_per_s = 0; + } + + fprintf( stderr, " %10luK, %10luK/s\r", outk, k_per_s ); } #ifdef SYS5 debian/patches/series0000644000000000000000000000046611773253310012042 0ustar typo-fixes semun-semctl-fixes fix-num-free-blocks-224984 no-shmdt-before-fork-428105 complain-abount-non-option-arguments no-shmat-decl no-option-parsing-buffer-overrun-123543 print-throughput gcc-warning-fixes no-division-by-0-123543 plus-4tb-file-support document-undocumented-options document-buffer-limits debian/patches/gcc-warning-fixes0000600000000000000000000000057611773247574014074 0ustar --- a/buffer.c +++ b/buffer.c @@ -679,7 +679,7 @@ int fill_block() { - int bytes; + int bytes = 0; char *start; int toread; static char eof_reached = 0; @@ -738,7 +738,7 @@ { int filled = 0; int maxfilled = (blocks * percent) / 100; - int first_block; + int first_block = 0; if( debug ) fprintf( stderr, "\tW: Entering writer\n blocks = %d\n maxfilled = %d\n", debian/patches/complain-abount-non-option-arguments0000600000000000000000000000031711773070540017726 0ustar --- a/buffer.c +++ b/buffer.c @@ -397,6 +397,11 @@ byee( -1 ); } } + + if (argc > optind) { + fprintf( stderr, "too many arguments\n" ); + byee( -1 ); + } if (zflag) showevery = blocksize; debian/patches/semun-semctl-fixes0000600000000000000000000000261111773066072014271 0ustar --- a/sem.c +++ b/sem.c @@ -27,6 +27,7 @@ * semaphores */ #include +#include #include #include #include @@ -34,6 +35,20 @@ #include #include "sem.h" +/* If we've got a version of glibc that doesn't define union semun, we do + * it ourseleves like in semctl(2). Otherwise, fall back to the original + * buffer behaviour of defining it (differetly!) only on some systems. + * + * mbuck@debian.org, 1999/08/29 + */ +#if defined(__GNU_LIBRARY__) && defined(_SEM_SEMUN_UNDEFINED) +union semun { + int val; /* value for SETVAL */ + struct semid_ds *buf; /* buffer for IPC_STAT & IPC_SET */ + unsigned short int *array; /* array for GETALL & SETALL */ + struct seminfo *__buf; /* buffer for IPC_INFO */ +}; +#else #if defined(SYS5) || defined(ultrix) || defined(_AIX) union semun { int val; @@ -41,6 +56,7 @@ ushort *array; }; #endif +#endif /* IMPORTS */ @@ -95,7 +111,7 @@ return sem; } -static +static void do_sem( sem_id, pbuf, err ) int sem_id; struct sembuf *pbuf; @@ -149,10 +165,13 @@ remove_sems( sem_id ) int sem_id; { + union semun arg; + if( sem_id == -1 ) return; - if( semctl( sem_id, 0, IPC_RMID, NULL ) == -1 ){ + arg.val = 0; + if( semctl( sem_id, 0, IPC_RMID, arg ) == -1 ){ report_proc(); perror( "internal error, failed to remove semaphore" ); } debian/patches/document-undocumented-options0000600000000000000000000000350611773251475016547 0ustar --- a/buffer.c +++ b/buffer.c @@ -397,7 +397,7 @@ } break; default: - fprintf( stderr, "Usage: %s [-B] [-t] [-S size] [-m memsize] [-b blocks] [-p percent] [-s blocksize] [-u pause] [-i infile] [-o outfile] [-z size]\n", + fprintf( stderr, "Usage: %s [-B] [-t] [-S size] [-m memsize] [-b blocks] [-p percent] [-s blocksize] [-u pause] [-i infile] [-o outfile] [-z size] [-Z] [-d]\n", progname ); fprintf( stderr, "-B = blocked device - pad out last block\n" ); fprintf( stderr, "-t = show total amount written at end\n" ); @@ -410,6 +410,8 @@ fprintf( stderr, "-i infile = file to read from\n" ); fprintf( stderr, "-o outfile = file to write to\n" ); fprintf( stderr, "-z size = combined -S/-s flag\n" ); + fprintf( stderr, "-Z = seek to beginning of output after each 1GB (for some tape drives)\n" ); + fprintf( stderr, "-d = print debug information to stderr\n" ); byee( -1 ); } } --- a/buffer.man +++ b/buffer.man @@ -25,9 +25,9 @@ buffer \- very fast reblocking program .SH SYNTAX .B buffer -[\fB\-S size\fP] [\fB\-b blocks\fP] [\fB\-s size\fP] [\fB\-m size\fP] +[\fB\-S size\fP] [\fB\-b blocks\fP] [\fB\-s size\fP] [\fB\-z size\fP] [\fB\-m size\fP] [\fB\-p percentage\fP] [\fB\-u microseconds\fP] [\fB-B\fR] [\fB-t\fR] -[\fB-Z\fR] [\fB-i filename\fR] [\fB-o filename\fR] +[\fB-Z\fR] [\fB-i filename\fR] [\fB-o filename\fR] [\fB-d\fR] .SH OPTIONS .TP 5 .B \-i filename @@ -86,6 +86,9 @@ Use this flag with extreme care. It can only be used on devices where an lseek does not rewind the tape but does reset the kernels position flags. It is used to allow more than 2 gigabytes to be written. +.TP +.B \-d +Print debug information to stderr during operation. .PP Sizes are a number with an optional trailing character. A 'b' multiplies the size by 512, a 'k' by 1024 and an 'm' by a meg. debian/buffer.lintian-override0000600000000000000000000000023611770552162013633 0ustar # Full stop at end of synopsis is OK - it doesn't end a sentence but is # part of an abbreviation. buffer: description-synopsis-might-not-be-phrased-properly debian/rules0000711000000000000000000000245111773311030010234 0ustar #!/usr/bin/make -f CFLAGS = -g -Wall -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS))) CFLAGS += -O0 else CFLAGS += -O2 endif .PHONY: build build: build-arch build-indep .PHONY: build-arch build-arch: build-stamp .PHONY: build-indep build-indep: build-stamp build-stamp: dh_testdir make CFLAGS="$(CFLAGS)" touch build-stamp clean: dh_testdir dh_testroot -rm -f build-stamp install-stamp make clean dh_clean install: install-stamp install-stamp: build-stamp dh_testdir dh_testroot dh_prep dh_installdirs usr/bin usr/share/man/man1 usr/share/lintian/overrides make install INSTBIN=debian/buffer/usr/bin INSTMAN=debian/buffer/usr/share/man/man1 S=1 touch install-stamp binary-indep: build install binary-arch: build install dh_testdir dh_testroot dh_installdocs README # dh_installexamples # dh_installmenu # dh_installemacsen # dh_installinit # dh_installcron # dh_installman # dh_undocumented dh_installchangelogs install -m 644 debian/buffer.lintian-override debian/buffer/usr/share/lintian/overrides/buffer dh_strip dh_compress dh_fixperms # dh_suidregister dh_installdeb dh_shlibdeps dh_gencontrol # dh_makeshlibs dh_md5sums dh_builddeb binary: binary-indep binary-arch .PHONY: build clean binary-indep binary-arch binary install debian/source/0000700000000000000000000000000011770577526010475 5ustar debian/source/format0000600000000000000000000000001411770577526011705 0ustar 3.0 (quilt) debian/changelog0000600000000000000000000001030511773310104011024 0ustar buffer (1.19-11) unstable; urgency=low * Documented undocumented options. Closes: #608637 * Documented buffer size limits. Closes: #561938 * Switched to debhelper compatibility level 8 * Switched to dpkg-source 3.0 (quilt) format * Split large autogenerated quilt patch into separate ones * Implemented build-arch/build-indep targets * Upgraded to Standards-Version 3.9.3.0 (no changes required) -- Martin Buck Thu, 21 Jun 2012 12:47:30 +0200 buffer (1.19-10) unstable; urgency=low * Fixed shared memory mapping to guarantee same address space in both parent and child process. Closes: #428105 * Made lintian happy: - Fixed copyright file - Moved debhelper compat level to debian/compat - Don't ignore "make clean" errors * Upgraded to Standards-Version 3.7.3.0 (no changes required) -- Martin Buck Fri, 9 May 2008 16:09:42 +0200 buffer (1.19-9) unstable; urgency=low * Applied patch from Petr Salinger for GNU/kFreeBSD compatibility. Closes: #401743 * Upgraded to Standards-Version 3.7.2.2 (no changes required) -- Martin Buck Fri, 9 Mar 2007 16:00:12 +0100 buffer (1.19-8) unstable; urgency=low * Applied patch from A. Costa to fix typos in manpage. Closes: #377637 * Added lintian override for bogus warning about package description * Upgraded to Standards-Version 3.6.2.2 (no changes required) -- Martin Buck Wed, 12 Jul 2006 09:50:29 +0200 buffer (1.19-7) unstable; urgency=low * Really changed priority this time. Sigh. -- Martin Buck Sat, 1 Jan 2005 23:46:26 +0100 buffer (1.19-6) unstable; urgency=low * Changed priority to optional. Closes: #283803 -- Martin Buck Thu, 30 Dec 2004 15:04:31 +0100 buffer (1.19-5) unstable; urgency=low * Disabled obsolete declaration of shmat(). Closes: #260395 -- Martin Buck Tue, 27 Jul 2004 23:50:50 +0200 buffer (1.19-4) unstable; urgency=low * Fixed hang when using option "-p 100". Closes: #224984 -- Martin Buck Sun, 11 Jan 2004 23:20:39 +0100 buffer (1.19-3) unstable; urgency=low * Added largefile support. Closes: #156847 * Made sure -S/-z works properly with files > 4 TB. * Upgraded to Standards-Version 3.5.8 -- Martin Buck Fri, 31 Jan 2003 23:55:43 +0100 buffer (1.19-2) unstable; urgency=low * Fixed buffer overrun in option parsing. Fixed (rather theoretical) potential division by zero in throughput calculation. Closes: #123543 -- Martin Buck Tue, 11 Dec 2001 23:34:46 +0100 buffer (1.19-1) unstable; urgency=low * New upstream version. Closes: #91961 * Added a few spelling fixes from FreeBSD version 1.17.1 * Added (slightly modified version of) patch from Marc Schaefer that prints the throughput with option -S * Fixed a few gcc warnings -- Martin Buck Thu, 5 Apr 2001 22:10:07 +0200 buffer (1.17-6) unstable; urgency=low * Added Build-Depends. Closes: #70332 -- Martin Buck Mon, 5 Mar 2001 22:19:09 +0100 buffer (1.17-5) unstable; urgency=low * Cleaned up debian/rules * Upgraded to Debian policy 3.0.1.1 -- Martin Buck Mon, 13 Sep 1999 23:19:57 +0200 buffer (1.17-4) unstable; urgency=low * buffer now complains if non-option arguments are found * Document changes from original version in copyright-file * Checked conformance with Debian policy 2.5.0 -- Martin Buck Sun, 29 Aug 1999 00:57:03 +0200 buffer (1.17-3) unstable; urgency=low * NMU; added missing SEM_SEMUN_UNDEFINED * closes: #31931 * fixes: #31920 -- Hartmut Koptein Fri, 9 Jul 1999 10:04:49 +0200 buffer (1.17-2) unstable; urgency=low * Applied patch from Paul Slootman (closes: Bug#26098): - egcs complains about NULL where union expected. Now it builds on Alpha. - typos in manpage fixed. * Switched from debstd to debhelper -- Martin Buck Wed, 9 Sep 1998 22:35:29 +0200 buffer (1.17-1) unstable; urgency=low * Initial Release. -- Martin Buck Wed, 27 Aug 1997 01:11:29 +0200 Local variables: mode: debian-changelog End: debian/copyright0000600000000000000000000000210111770552162011111 0ustar This package was debianized by Martin Buck on Wed, 27 Aug 1997 01:11:29 +0200. It was downloaded from http://sunsite.org.uk/public/public/packages/buffer/ Upstream Author: Lee McLoughlin Copyright (C) 1990,1991 Lee McLoughlin 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 Free Software Foundation; either version 1, or (at your option) any later version. This program 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 with the Debian GNU/Linux distribution in /usr/share/common-licenses/GPL. If not, see . In addtion under NO circumstances can I (Lee McLoughlin), or Imperial College, be held liable for any event caused by the running or storing of this program or its documentation.