summaryrefslogtreecommitdiff
path: root/usr.bin/patch/patch.c
Commit message (Collapse)AuthorAgeFilesLines
* patch(1): give /dev/null patches special treatmentKyle Evans2019-11-041-3/+139
| | | | | | | | | | | | | | | | We have a bad habit of duplicating contents of files that are sourced from /dev/null and applied more than once... take the more sane (in most ways) GNU route and complain if the file exists and offer reversal options. This still falls short a little bit as selecting "don't reverse, apply anyway" will still give you duplicated file contents. There's probably other issues as well, but awareness is the first step to happiness. MFC after: 2 weeks Differential Revision: https://reviews.freebsd.org/D21535 Notes: svn path=/head/; revision=354328
* patch(1): Exit successfully if we're fed a 0-length patchKyle Evans2019-03-011-1/+2
| | | | | | | | | | | | | | | | This change is made in the name of GNU patch compatibility. If GNU patch is fed a zero-length patch, it will exit successfully with no output. This is used in at least one port to date (comms/wsjtx), and we break on this usage. It seems unlikely that anyone relies on patch(1) calling their completely empty patch garbage and failing, and GNU compatibility is a plus if it helps with porting, so make the switch. Reported by: db MFC after: 2 weeks Notes: svn path=/head/; revision=344677
* patch: rejname[] is also -r option buffer, and should be PATH_MAX.Pedro F. Giffuni2017-12-211-1/+1
| | | | | | | Obtained from: OpenBSD (CVS 1.64) Notes: svn path=/head/; revision=327063
* patch(1): don't assume a match if we run out of context to checkKyle Evans2017-11-221-0/+3
| | | | | | | | | | | | | | | | | | Patches with very little context (-U0 and -U1) could get misapplied if the file to be patched changes and a hunk is no longer applicable. Matching with fuzz would be attempted and default to a match when we unexpectedly ran out of context. This also affected patches with higher levels of context but had limited actual context due to the hunk being located near the beginning/end of file. PR: 74127, 223545 (exp-run) Reviewed by: emaste, pfg Approved by: emaste (mentor) Differential Revision: https://reviews.freebsd.org/D12631 Notes: svn path=/head/; revision=326084
* Revert r325365Kyle Evans2017-11-081-3/+0
| | | | | | | | | | | r325365 caused several ports to fail to patch correctly. Revert it for the time being until an exp-run can be completed. Requested by: antoine Approved by: emaste (implicit) Notes: svn path=/head/; revision=325564
* patch(1): don't assume a match if we run out of context to checkKyle Evans2017-11-031-0/+3
| | | | | | | | | | | | | | | Patches with very little context (-U0 and -U1) could get misapplied if the file to be patched changes and a hunk is no longer applicable. Matching with fuzz would be attempted and default to a match when we unexpectedly ran out of context. PR: 74127 Reviewed by: emaste, pfg Approved by: emaste (mentor) Differential Revision: https://reviews.freebsd.org/D12631 Notes: svn path=/head/; revision=325365
* patch(1): replace strnlen() with a simpler strlen().Pedro F. Giffuni2017-01-021-2/+2
| | | | | | | | | Small style fix with here. Pointed out by: kib Notes: svn path=/head/; revision=311110
* Revert r311106:Pedro F. Giffuni2017-01-021-6/+8
| | | | | | | | | | | patch(1): extend the maximum length of a line from USHRT_MAX to UINT_MAX. This doesn't really work for 32 bit platforms. Pointed out by: kib Notes: svn path=/head/; revision=311109
* patch(1): extend the maximum length of a line from USHRT_MAX to UINT_MAX.Pedro F. Giffuni2017-01-021-8/+6
| | | | | | | | | | We can handle such "big data" without much trouble. Try to do a better job at detecting the rejection cause while here. MFC after: 2 weeks Notes: svn path=/head/; revision=311106
* Adjust a type from r267490.Pedro F. Giffuni2016-04-241-1/+1
| | | | | | | | Independent of the maximum length, the return type for strnlen(3) is always size_t. Notes: svn path=/head/; revision=298531
* patch(1): Add -Vnone option to disable backup filesConrad Meyer2015-07-211-3/+6
| | | | | | | | | | | | Differential Revision: https://reviews.freebsd.org/D3146 Reviewed by: pfg Approved by: markj (mentor) MFC after: 1 week Relnotes: yes Sponsored by: EMC / Isilon Storage Division Notes: svn path=/head/; revision=285772
* Fixes to exit status.Pedro F. Giffuni2014-12-311-1/+1
| | | | | | | | | | | | | | Exit with EXIT_FAILURE for invalid arguments. Fixes NetBSD-PR 43517. Print version string to stdout instead of stderr; it is user-requested and not an error. Obtained from: NetBSD MFC after: 5 days Notes: svn path=/head/; revision=276472
* patch: Bring in xstrdup and use it when appropriate.Pedro F. Giffuni2014-12-251-10/+10
| | | | | | | | | | | | | | | The function savestr allows NULL return values during Plan A patching so in case of out of memory conditions, Plan B can step in. In many cases, NULL value is not properly handled, so use xstrdup here (it's outside Plan A/B patching, which means that even Plan B relies on successful operations). Clean up some whitespaces while here Obtained from: OpenBSD MFC after: 2 weeks Notes: svn path=/head/; revision=276218
* Prefer setvbuf() to setlinebuf().Pedro F. Giffuni2014-12-071-3/+3
| | | | | | | | | | On FreeBSD's libc setlinebuf is a wrapper to setvbuf anyways. Obtained from: OpenBSD MFC after: 5 days Notes: svn path=/head/; revision=275581
* patch: add dry-run alias for compatibility with other implementations.Pedro F. Giffuni2014-06-151-0/+1
| | | | | | | | | | | | | Other implementations of patch(1), including GNU patch and "svn patch" have a --dry-run option which does the same as our -C or --check option. Add a new alias to make our implementation more compatible. MFC after: 1 week Notes: svn path=/head/; revision=267512
* patch: unsign the line length to avoid overflows.Pedro F. Giffuni2014-06-151-5/+9
| | | | | | | | | | | | | | | | | | Patch(1) uses a short int for the line length, which is usually sufficient for regular diffs, but makes no effort to signal when there is an overflow. Change the line length to an unsigned short int to better use the fact that a length is never negative. The change is loosely inspired on a related change in DragonFly, but we avoid spending more memory than necessary. While here adjust the messages to be clearer on what is happening. MFC after: 1 week Notes: svn path=/head/; revision=267490
* Improve bsdpatch usability:Xin LI2013-09-261-4/+7
| | | | | | | | | | | | | - Ask only once for "Apply anyway". [1] - Tell user what file have failed patch rather than just how many hunks failed. Reported by: jmg via pfg [1] Tested by: pfg [1] Approved by: re (gjb) Notes: svn path=/head/; revision=255894
* patch: style fixPedro F. Giffuni2013-07-241-2/+4
| | | | | | | Submitted by: gogolok Notes: svn path=/head/; revision=253614
* Revert r250972 to fix build.Glen Barber2013-05-251-3/+3
| | | | Notes: svn path=/head/; revision=250975
* The error handling for writes to the target file could lead to the finalStefan Eßer2013-05-241-3/+3
| | | | | | | | | | | | | fclose() being skipped. Fix this by using boolean "&" and "|" instead of short-cut operators "&&" and "||". While here, increment the last part of the version string. The reason is the fixed output file selection logic in pch.c, which was committed as r250943, yesterday. Reviewed by: pfg Notes: svn path=/head/; revision=250972
* - Refresh code with latest OpenBSD revisions.Xin LI2013-01-291-15/+18
| | | | | | | | | | | | - Remove $DragonFly$ tags as they are using git nowadays and VCS tags will not help merging. - Other changes to Copyright headers to make them consistent with other source code, we intend to fork from this point. Reviewed by: pfg Notes: svn path=/head/; revision=246091
* - Add a BSD-licensed patch, ported by Pedro F. Giffuni (pfg) fromGabor Kovesdan2013-01-291-0/+1066
| | | | | | | | | | | DragonflyBSD and install it as bsdpatch. WITH_BSD_PATCH makes it default and installs GNU patch as gnupatch. Submitted by: pfg Obtained from: The DragonflyBSD Project Notes: svn path=/head/; revision=246074
* kill the undeadPeter Wemm1997-07-131-800/+0
| | | | Notes: svn path=/head/; revision=27369
* Finish importing Lite2's src/usr.bin, except for ex, diff, grep, mail,Bruce Evans1997-07-061-0/+800
pascal and vmstat.sparc. All changed files on the vendor branch should already have been imported. Notes: svn path=/vendor/CSRG/dist/; revision=27241