xref: /dragonfly/usr.bin/patch/common.h (revision b94b84ca)
15027f2b8SJohn Marino /*-
248d201a5SJoerg Sonnenberger  * Copyright 1986, Larry Wall
348d201a5SJoerg Sonnenberger  *
448d201a5SJoerg Sonnenberger  * Redistribution and use in source and binary forms, with or without
548d201a5SJoerg Sonnenberger  * modification, are permitted provided that the following condition is met:
648d201a5SJoerg Sonnenberger  * 1. Redistributions of source code must retain the above copyright notice,
748d201a5SJoerg Sonnenberger  * this condition and the following disclaimer.
848d201a5SJoerg Sonnenberger  *
948d201a5SJoerg Sonnenberger  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND ANY
1048d201a5SJoerg Sonnenberger  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
1148d201a5SJoerg Sonnenberger  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
1248d201a5SJoerg Sonnenberger  * DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR
1348d201a5SJoerg Sonnenberger  * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
1448d201a5SJoerg Sonnenberger  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
1548d201a5SJoerg Sonnenberger  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
1648d201a5SJoerg Sonnenberger  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
1748d201a5SJoerg Sonnenberger  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
1848d201a5SJoerg Sonnenberger  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
1948d201a5SJoerg Sonnenberger  * SUCH DAMAGE.
2048d201a5SJoerg Sonnenberger  *
215027f2b8SJohn Marino  * patch - a program to apply diffs to original files
225027f2b8SJohn Marino  *
2348d201a5SJoerg Sonnenberger  * -C option added in 1998, original code by Marc Espie, based on FreeBSD
2448d201a5SJoerg Sonnenberger  * behaviour
255027f2b8SJohn Marino  *
265027f2b8SJohn Marino  * $OpenBSD: common.h,v 1.26 2006/03/11 19:41:30 otto Exp $
27*b94b84caSDaniel Fojt  * $FreeBSD: head/usr.bin/patch/common.h 344677 2019-03-01 01:20:21Z kevans $
2848d201a5SJoerg Sonnenberger  */
2948d201a5SJoerg Sonnenberger 
309d62a0f9SSascha Wildner #include <sys/types.h>
319d62a0f9SSascha Wildner 
3248d201a5SJoerg Sonnenberger #include <stdbool.h>
332c017143SJoerg Sonnenberger #include <stdint.h>
345d6897abSMatthew Dillon 
3548d201a5SJoerg Sonnenberger #define	DEBUGGING
3648d201a5SJoerg Sonnenberger 
3748d201a5SJoerg Sonnenberger /* constants */
3848d201a5SJoerg Sonnenberger 
395027f2b8SJohn Marino #define	MAXHUNKSIZE 200000	/* is this enough lines? */
4048d201a5SJoerg Sonnenberger #define	INITHUNKMAX 125		/* initial dynamic allocation size */
415027f2b8SJohn Marino #define	INITLINELEN 4096
425027f2b8SJohn Marino #define	BUFFERSIZE 4096
43*b94b84caSDaniel Fojt #define	LINENUM_MAX LONG_MAX
4448d201a5SJoerg Sonnenberger 
4548d201a5SJoerg Sonnenberger #define	ORIGEXT ".orig"
4648d201a5SJoerg Sonnenberger #define	REJEXT ".rej"
4748d201a5SJoerg Sonnenberger 
4848d201a5SJoerg Sonnenberger /* handy definitions */
4948d201a5SJoerg Sonnenberger 
50*b94b84caSDaniel Fojt #define	strEQ(s1,s2) (strcmp(s1, s2) == 0)
51*b94b84caSDaniel Fojt #define	strnNE(s1,s2,l) (strncmp(s1, s2, l) != 0)
52*b94b84caSDaniel Fojt #define	strnEQ(s1,s2,l) (strncmp(s1, s2, l) == 0)
5348d201a5SJoerg Sonnenberger 
5448d201a5SJoerg Sonnenberger /* typedefs */
5548d201a5SJoerg Sonnenberger 
5648d201a5SJoerg Sonnenberger typedef long    LINENUM;	/* must be signed */
5748d201a5SJoerg Sonnenberger 
5848d201a5SJoerg Sonnenberger /* globals */
5948d201a5SJoerg Sonnenberger 
609d62a0f9SSascha Wildner extern mode_t	filemode;
6148d201a5SJoerg Sonnenberger 
625027f2b8SJohn Marino extern char	*buf;		/* general purpose buffer */
635027f2b8SJohn Marino extern size_t	buf_size;	/* size of general purpose buffer */
6448d201a5SJoerg Sonnenberger 
6548d201a5SJoerg Sonnenberger extern bool	using_plan_a;	/* try to keep everything in memory */
6648d201a5SJoerg Sonnenberger extern bool	out_of_mem;	/* ran out of memory in plan a */
67*b94b84caSDaniel Fojt extern bool	nonempty_patchf_seen;	/* seen a non-zero-length patch file? */
6848d201a5SJoerg Sonnenberger 
6948d201a5SJoerg Sonnenberger #define	MAXFILEC 2
7048d201a5SJoerg Sonnenberger 
7148d201a5SJoerg Sonnenberger extern char	*filearg[MAXFILEC];
7248d201a5SJoerg Sonnenberger extern bool	ok_to_create_file;
7348d201a5SJoerg Sonnenberger extern char	*outname;
7448d201a5SJoerg Sonnenberger extern char	*origprae;
7548d201a5SJoerg Sonnenberger 
7648d201a5SJoerg Sonnenberger extern char	*TMPOUTNAME;
7748d201a5SJoerg Sonnenberger extern char	*TMPINNAME;
7848d201a5SJoerg Sonnenberger extern char	*TMPREJNAME;
7948d201a5SJoerg Sonnenberger extern char	*TMPPATNAME;
8048d201a5SJoerg Sonnenberger extern bool	toutkeep;
8148d201a5SJoerg Sonnenberger extern bool	trejkeep;
8248d201a5SJoerg Sonnenberger 
8348d201a5SJoerg Sonnenberger #ifdef DEBUGGING
8448d201a5SJoerg Sonnenberger extern int	debug;
8548d201a5SJoerg Sonnenberger #endif
8648d201a5SJoerg Sonnenberger 
8748d201a5SJoerg Sonnenberger extern bool	force;
8848d201a5SJoerg Sonnenberger extern bool	batch;
8948d201a5SJoerg Sonnenberger extern bool	verbose;
9048d201a5SJoerg Sonnenberger extern bool	reverse;
9148d201a5SJoerg Sonnenberger extern bool	noreverse;
9248d201a5SJoerg Sonnenberger extern bool	skip_rest_of_patch;
9348d201a5SJoerg Sonnenberger extern int	strippath;
9448d201a5SJoerg Sonnenberger extern bool	canonicalize;
9548d201a5SJoerg Sonnenberger /* TRUE if -C was specified on command line.  */
9648d201a5SJoerg Sonnenberger extern bool	check_only;
9748d201a5SJoerg Sonnenberger extern bool	warn_on_invalid_line;
9848d201a5SJoerg Sonnenberger extern bool	last_line_missing_eol;
9948d201a5SJoerg Sonnenberger 
10048d201a5SJoerg Sonnenberger 
10148d201a5SJoerg Sonnenberger #define	CONTEXT_DIFF 1
10248d201a5SJoerg Sonnenberger #define	NORMAL_DIFF 2
10348d201a5SJoerg Sonnenberger #define	ED_DIFF 3
10448d201a5SJoerg Sonnenberger #define	NEW_CONTEXT_DIFF 4
10548d201a5SJoerg Sonnenberger #define	UNI_DIFF 5
10648d201a5SJoerg Sonnenberger 
10748d201a5SJoerg Sonnenberger extern int	diff_type;
10848d201a5SJoerg Sonnenberger extern char	*revision;	/* prerequisite revision, if any */
10948d201a5SJoerg Sonnenberger extern LINENUM	input_lines;	/* how long is input file in lines */
11048d201a5SJoerg Sonnenberger 
11148d201a5SJoerg Sonnenberger extern int	posix;
11248d201a5SJoerg Sonnenberger 
113