Added debug/repeat.c.
authorLasse Collin <lasse.collin@tukaani.org>
Sun, 20 Jan 2008 18:14:26 +0000 (20:14 +0200)
committerLasse Collin <lasse.collin@tukaani.org>
Sun, 20 Jan 2008 18:14:26 +0000 (20:14 +0200)
debug/Makefile.am
debug/repeat.c [new file with mode: 0644]

index b393db3..16433b7 100644 (file)
@@ -13,6 +13,7 @@
 ##
 
 noinst_PROGRAMS = \
+       repeat \
        sync_flush
 
 AM_CPPFLAGS = \
diff --git a/debug/repeat.c b/debug/repeat.c
new file mode 100644 (file)
index 0000000..849f7b7
--- /dev/null
@@ -0,0 +1,43 @@
+///////////////////////////////////////////////////////////////////////////////
+//
+/// \file       repeat.c
+/// \brief      Repeats given string given times
+///
+/// This program can be useful when debugging run-length encoder in
+/// the Subblock filter, especially the condition when repeat count
+/// doesn't fit into 28-bit integer.
+//
+//  Copyright (C) 2008 Lasse Collin
+//
+//  This library is free software; you can redistribute it and/or
+//  modify it under the terms of the GNU Lesser General Public
+//  License as published by the Free Software Foundation; either
+//  version 2.1 of the License, or (at your option) any later version.
+//
+//  This library 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
+//  Lesser General Public License for more details.
+//
+///////////////////////////////////////////////////////////////////////////////
+
+#include "sysdefs.h"
+#include <stdio.h>
+
+
+int
+main(int argc, char **argv)
+{
+       if (argc != 3) {
+               fprintf(stderr, "Usage: %s COUNT STRING\n", argv[0]);
+               exit(1);
+       }
+
+       unsigned long long count = strtoull(argv[1], NULL, 10);
+       const size_t size = strlen(argv[2]);
+
+       while (count-- != 0)
+               fwrite(argv[2], 1, size, stdout);
+
+       return !!(ferror(stdout) || fclose(stdout));
+}