Add the 'diffburst' tool, which does the following:
Reads the output of 'diff -r' and splits it into separate patch files, one per file. The files are named 'patch-XX' where XX is aa, ab, ac, ... Useful when creating ports.
This commit is contained in:
parent
de5d1ba57c
commit
740e54be27
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=42375
@ -1,4 +1,4 @@
|
||||
# $Id: README,v 1.13 1998/12/15 16:51:48 cracauer Exp $
|
||||
# $Id: README,v 1.14 1998/12/17 12:21:19 cracauer Exp $
|
||||
|
||||
This directory is for tools.
|
||||
|
||||
@ -22,3 +22,6 @@ tcl_bmake Generates a bmake Makefile for src/lib/libtcl.
|
||||
upgrade Scripts used for upgrading an installed system.
|
||||
vop_table Generates a HTML document that shows all the VOP's in
|
||||
the kernel.
|
||||
diffburst Reads the output of 'diff -r' and splits it into separate
|
||||
patch files, one per file. The files are named 'patch-XX'
|
||||
where XX is aa, ab, ac, ... Useful when creating ports.
|
||||
|
9
tools/tools/diffburst/Makefile
Normal file
9
tools/tools/diffburst/Makefile
Normal file
@ -0,0 +1,9 @@
|
||||
# $Id: Makefile,v 1.1 1997/12/06 00:44:04 archie Exp $
|
||||
|
||||
PROG= diffburst
|
||||
SRCS= main.c
|
||||
MAN1= diffburst.1
|
||||
|
||||
COPTS+= -g -Wall
|
||||
|
||||
.include <bsd.prog.mk>
|
19
tools/tools/diffburst/diffburst.1
Normal file
19
tools/tools/diffburst/diffburst.1
Normal file
@ -0,0 +1,19 @@
|
||||
.Dd Jan 7, 1999
|
||||
.Dt DIFFBURST 1
|
||||
.Os BSD 4.4
|
||||
.Sh NAME
|
||||
.Nm diffburst
|
||||
.Nd split recursive diff output into separate files
|
||||
.Sh SYNOPSIS
|
||||
.Nm diffburst < input
|
||||
.Sh DESCRIPTION
|
||||
.Nm
|
||||
reads the output of a recursive diff from standard input,
|
||||
and writes it back out as a series of patchfiles, where each patchfile
|
||||
contains the diff for a single file. The files are named
|
||||
patch-aa, patch-ab, and so on.
|
||||
.Pp
|
||||
This program is intended to aid in developing FreeBSD ports,
|
||||
where the 'one patchfile per file' rule applies.
|
||||
.Sh AUTHOR
|
||||
Archie Cobbs <archie@whistle.com>
|
44
tools/tools/diffburst/main.c
Normal file
44
tools/tools/diffburst/main.c
Normal file
@ -0,0 +1,44 @@
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <err.h>
|
||||
|
||||
/* Split a recursive diff into sub-patches to satisfy the requirement
|
||||
that each patch only patch a single file */
|
||||
|
||||
int
|
||||
main(int ac, char *av[])
|
||||
{
|
||||
int ln;
|
||||
char line[8192];
|
||||
char suf[2] = { 'a', 'a' };
|
||||
FILE *fp = NULL;
|
||||
|
||||
memset(line, 0, sizeof(line));
|
||||
for (ln = 1; fgets(line, sizeof(line) - 1, stdin); ln++)
|
||||
{
|
||||
if (line[strlen(line) - 1] != '\n')
|
||||
errx(1, "line %d is too long", ln);
|
||||
if (!strncmp(line, "diff", 4) && fp != NULL)
|
||||
{
|
||||
fclose(fp);
|
||||
fp = NULL;
|
||||
}
|
||||
if (fp == NULL)
|
||||
{
|
||||
char name[200];
|
||||
|
||||
snprintf(name, sizeof(name), "patch-%c%c", suf[0], suf[1]);
|
||||
if (suf[1]++ == 'z')
|
||||
{
|
||||
suf[1] = 'a';
|
||||
suf[0]++;
|
||||
}
|
||||
if ((fp = fopen(name, "w")) == NULL)
|
||||
err(1, "%s", name);
|
||||
}
|
||||
fprintf(fp, "%s", line);
|
||||
}
|
||||
return(0);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user