Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages


home | help
PatchReader(3)	      User Contributed Perl Documentation	PatchReader(3)

       PatchReader - Utilities to read and manipulate patches and CVS

	 # Script that reads in	a patch	(in any	known format), and prints
	 # out some information	about it.  Other common	operations are
	 # outputting the patch	in a raw unified diff format, outputting
	 # the patch information to Template::Toolkit templates, adding
	 # context to a	patch from CVS,	and narrowing the patch	down to
	 # apply only to a single file or set of files.

	 use PatchReader::Raw;
	 use PatchReader::PatchInfoGrabber;
	 my $filename =	'filename.patch';

	 # Create the reader that parses the patch and the object that
	 # extracts info from the reader's datastream
	 my $reader = new PatchReader::Raw();
	 my $patch_info_grabber	= new PatchReader::PatchInfoGrabber();

	 # Iterate over	the file

	 # Print the output
	 my $patch_info	= $patch_info_grabber->patch_info();
	 print "Summary	of Changed Files:\n";
	 while (my ($file, $info) = each %{$patch_info->{files}}) {
	   print "$file: +$info->{plus_lines} -$info->{minus_lines}\n";

       This perl library allows	you to manipulate patches programmatically by
       chaining	together a variety of objects that read, manipulate, and
       output patch information:

	   Parse a patch in any	format known to	this author (unified, normal,
	   cvs diff, among others)

	   Grab	summary	info for sections of a patch in	a nice hash

	   Add context to the patch by grabbing	the original files from	CVS

	   Narrow a patch down to only apply to	a specific set of files

	   Output the parsed patch in raw unified diff format

	   Output the parsed patch to Template::Toolkit	templates (can be used
	   to make HTML	output or anything else	you please)

       Additionally, it	is designed so that you	can plug in your own objects
       that read the parsed data while it is being parsed (no need for the
       performance or memory problems that can come from reading in the	entire
       patch all at once).  You	can do this by mimicking one of	the existing
       readers (such as	PatchInfoGrabber) and overriding the methods
       start_patch, start_file,	section, end_file and end_patch.

perl v5.32.1			  2022-03-26			PatchReader(3)


Want to link to this manual page? Use this URL:

home | help