-#!/usr/bin/perl
-use strict;
-use warnings;
-
-my $amount = 10;
-my $maxLen = 509;
-srand(0);
-
-my $templateFile = 'testLits.h.template';
-my $outFile = 'testLits.h';
-
-open(TF, $templateFile);
-
-open(OUT, '>'.$outFile);
-select OUT;
-
-my $inLoop = 0;
-my $loopText = '';
-
-foreach my $line (<TF>) {
- $line =~ s/\@amount/$amount/g;
- if (!$inLoop) {
- if ($line =~ /\@forEachRandomString/) {
- $inLoop = 1;
- next;
- }
- print $line;
- } elsif ($inLoop == 1) {
- if ($line =~ /\@end/) {
- $inLoop = 0;
- #handle $loopText
- for (my $i=0; $i<$amount; $i++) {
- my $str = randomCString($maxLen);
- my $lt = $loopText;
- $lt =~ s/\@i/$i/g;
- $lt =~ s/\@str/\"$str\"/g;
- print "$lt\n";
- }
- $loopText = '';
- next;
- }
- $loopText .= $line;
- }
-}
-
-close(OUT);
-close(TF);
-
-#argument: maxLen
-sub randomCString {
- my $len = int(rand($_[0]+1));
- my $lastWasHex = 0;
- my $str = '';
-
- for (my $i=0; $i<$len; $i++) {
- my $cn = int(rand(255)) + 1;
- my $c = chr($cn);
- if ($lastWasHex && ($c =~ /[0-9A-Fa-f]/)) {
- $lastWasHex = 1;
- $str .= sprintf("\\x%02X", $cn);
- } elsif ($c =~ /[\t\n\013\f\r]/) {
- $lastWasHex = 0;
- $c =~ tr/\t\n\013\f\r/tnvfr/;
- $str .= '\\'.$c;
- } elsif ($cn<32 || $cn>126) {
- $lastWasHex = 1;
- $str .= sprintf("\\x%02X", $cn);
- } else {
- $lastWasHex = 0;
- if ($c =~ /[\"\\]/) {
- $str .= '\\'.$c;
- } else {
- $str .= $c;
- }
- }
- }
- return $str;
-}