1*b94b84caSDaniel Fojt /*- 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 * 21*b94b84caSDaniel Fojt * patch - a program to apply diffs to original files 22*b94b84caSDaniel Fojt * 2348d201a5SJoerg Sonnenberger * -C option added in 1998, original code by Marc Espie, based on FreeBSD 2448d201a5SJoerg Sonnenberger * behaviour 25*b94b84caSDaniel Fojt * 26*b94b84caSDaniel Fojt * $OpenBSD: pch.h,v 1.9 2003/10/31 20:20:45 millert Exp $ 27*b94b84caSDaniel Fojt * $FreeBSD: head/usr.bin/patch/pch.h 354328 2019-11-04 03:07:01Z kevans $ 2848d201a5SJoerg Sonnenberger */ 2948d201a5SJoerg Sonnenberger 3048d201a5SJoerg Sonnenberger #define OLD_FILE 0 3148d201a5SJoerg Sonnenberger #define NEW_FILE 1 3248d201a5SJoerg Sonnenberger #define INDEX_FILE 2 3348d201a5SJoerg Sonnenberger #define MAX_FILE 3 3448d201a5SJoerg Sonnenberger 3548d201a5SJoerg Sonnenberger struct file_name { 3648d201a5SJoerg Sonnenberger char *path; 3748d201a5SJoerg Sonnenberger bool exists; 3848d201a5SJoerg Sonnenberger }; 3948d201a5SJoerg Sonnenberger 40*b94b84caSDaniel Fojt extern char *source_file; 41*b94b84caSDaniel Fojt 4248d201a5SJoerg Sonnenberger void re_patch(void); 4348d201a5SJoerg Sonnenberger void open_patch_file(const char *); 4448d201a5SJoerg Sonnenberger void set_hunkmax(void); 4548d201a5SJoerg Sonnenberger bool there_is_another_patch(void); 4648d201a5SJoerg Sonnenberger bool another_hunk(void); 4748d201a5SJoerg Sonnenberger bool pch_swap(void); 4848d201a5SJoerg Sonnenberger char *pfetch(LINENUM); 49*b94b84caSDaniel Fojt unsigned short pch_line_len(LINENUM); 5048d201a5SJoerg Sonnenberger LINENUM pch_first(void); 5148d201a5SJoerg Sonnenberger LINENUM pch_ptrn_lines(void); 5248d201a5SJoerg Sonnenberger LINENUM pch_newfirst(void); 5348d201a5SJoerg Sonnenberger LINENUM pch_repl_lines(void); 5448d201a5SJoerg Sonnenberger LINENUM pch_end(void); 5548d201a5SJoerg Sonnenberger LINENUM pch_context(void); 5648d201a5SJoerg Sonnenberger LINENUM pch_hunk_beg(void); 5748d201a5SJoerg Sonnenberger char pch_char(LINENUM); 5848d201a5SJoerg Sonnenberger void do_ed_script(void); 59