aboutsummaryrefslogtreecommitdiff
path: root/debug/repeat.c
diff options
context:
space:
mode:
authorLasse Collin <lasse.collin@tukaani.org>2008-01-20 20:14:26 +0200
committerLasse Collin <lasse.collin@tukaani.org>2008-01-20 20:14:26 +0200
commitd53e9b77054cfade6a643e77d085273a348b189c (patch)
tree561e0d08aec5a9d64a7b91e1910b57458e5467b8 /debug/repeat.c
parentFix alignment handling bugs in Subblock encoder. (diff)
downloadxz-d53e9b77054cfade6a643e77d085273a348b189c.tar.xz
Added debug/repeat.c.
Diffstat (limited to '')
-rw-r--r--debug/repeat.c43
1 files changed, 43 insertions, 0 deletions
diff --git a/debug/repeat.c b/debug/repeat.c
new file mode 100644
index 00000000..849f7b76
--- /dev/null
+++ b/debug/repeat.c
@@ -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));
+}