test-wrap-argv: add --in-place parameter

If --in-place is supplied as the first argument to the script,
replace the file in-place instead of printing to stdout.
This commit is contained in:
Ján Tomko 2016-05-31 10:19:04 +02:00
parent b0590a53a5
commit f46fb819a9
2 changed files with 22 additions and 10 deletions

View File

@ -22,7 +22,16 @@
# of the file. Parameter values that are longer than 80 chars will # of the file. Parameter values that are longer than 80 chars will
# also be split. # also be split.
# #
# If --in-place is supplied as the first parameter of this script,
# the files will be changed in place.
# Otherwise the rewrapped files are printed to the standard output.
$in_place = 0;
if (@ARGV[0] eq "--in-place") {
$in_place = 1;
shift @ARGV;
}
foreach my $file (@ARGV) { foreach my $file (@ARGV) {
&rewrap($file); &rewrap($file);
@ -57,10 +66,19 @@ sub rewrap {
# Now each @lines represents a single command, we # Now each @lines represents a single command, we
# can process them # can process them
foreach my $line (@lines) { @lines = map { &rewrap_line($_) } @lines;
print &rewrap_line ($line);
}
if ($in_place) {
open FILE, ">", $file or die "cannot write $file: $!";
foreach my $line (@lines) {
print FILE $line;
}
close FILE;
} else {
foreach my $line (@lines) {
print $line;
}
}
} }
sub rewrap_line { sub rewrap_line {

View File

@ -438,26 +438,20 @@ static int
virTestRewrapFile(const char *filename) virTestRewrapFile(const char *filename)
{ {
int ret = -1; int ret = -1;
char *outbuf = NULL;
char *script = NULL; char *script = NULL;
virCommandPtr cmd = NULL; virCommandPtr cmd = NULL;
if (virAsprintf(&script, "%s/test-wrap-argv.pl", abs_srcdir) < 0) if (virAsprintf(&script, "%s/test-wrap-argv.pl", abs_srcdir) < 0)
goto cleanup; goto cleanup;
cmd = virCommandNewArgList(script, filename, NULL); cmd = virCommandNewArgList(script, "--in-place", filename, NULL);
virCommandSetOutputBuffer(cmd, &outbuf);
if (virCommandRun(cmd, NULL) < 0) if (virCommandRun(cmd, NULL) < 0)
goto cleanup; goto cleanup;
if (virFileWriteStr(filename, outbuf, 0666) < 0)
goto cleanup;
ret = 0; ret = 0;
cleanup: cleanup:
VIR_FREE(script); VIR_FREE(script);
virCommandFree(cmd); virCommandFree(cmd);
VIR_FREE(outbuf);
return ret; return ret;
} }