#
355351 |
|
03-Dec-2019 |
kevans |
MFC r351836, r351866, r354328: patch(1) /dev/null testing+improvement
r351836: patch(1): add some basic tests
Summary: - basic: test application of patches created by diff -u at the beginning/middle/end of file, which have differing amounts of context before and after chunks being added - limited_ctx: stems from PR 74127 in which a rogue line was getting added when the patch should have been rejected. Similar behavior was reproducible with larger contexts near the beginning/end of a file. See r326084 for details - file_creation: patch sourced from /dev/null should create the file - file_nodupe: said patch sourced from /dev/null shouldn't dupe the contents when re-applied (personal vendetta, WIP, see comment) - file_removal: this follows from nodupe; the reverse of a patch sourced from /dev/null is most naturally deleting the file, as is expected based on GNU patch behavior (WIP)
r351866: patch(1): fix the file removal test, strengthen it a bit
To remain compatible with GNU patch, we should ensure that once we're removing empty files after a reversed /dev/null patch we don't remove files that have been modified. GNU patch leaves these intact and just reverses the hunk that created the file, effectively implying --remove-empty-files for reversed /dev/null patches.
r354328: patch(1): give /dev/null patches special treatment
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.
|
#
345878 |
|
04-Apr-2019 |
kevans |
MFC r344677: patch(1): Exit successfully if we're fed a 0-length patch
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.
|
#
331047 |
|
16-Mar-2018 |
eadler |
MFC r311106,r311109,r311110,r320579,r327063,r327064,:
patch(1): replace strnlen() with a simpler strlen(). patch(1): add support for git generated diffs. patch: rejname[] is also -r option buffer, and should be PATH_MAX. patch: further cleanup to git-style diffs.
|
#
328148 |
|
18-Jan-2018 |
kevans |
MFC r326084: patch(1): don't assume match if we run out of context to check
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
|
#
302408 |
|
07-Jul-2016 |
gjb |
Copy head@r302406 to stable/11 as part of the 11.0-RELEASE cycle. Prune svn:mergeinfo from the new branch, as nothing has been merged here.
Additional commits post-branch will follow.
Approved by: re (implicit) Sponsored by: The FreeBSD Foundation |
#
298531 |
|
24-Apr-2016 |
pfg |
Adjust a type from r267490.
Independent of the maximum length, the return type for strnlen(3) is always size_t.
|
#
285772 |
|
21-Jul-2015 |
cem |
patch(1): Add -Vnone option to disable backup files
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
|
#
276472 |
|
31-Dec-2014 |
pfg |
Fixes to exit status.
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
|
#
276218 |
|
25-Dec-2014 |
pfg |
patch: Bring in xstrdup and use it when appropriate.
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
|
#
275581 |
|
07-Dec-2014 |
pfg |
Prefer setvbuf() to setlinebuf().
On FreeBSD's libc setlinebuf is a wrapper to setvbuf anyways.
Obtained from: OpenBSD MFC after: 5 days
|
#
267512 |
|
15-Jun-2014 |
pfg |
patch: add dry-run alias for compatibility with other implementations.
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
|
#
267490 |
|
15-Jun-2014 |
pfg |
patch: unsign the line length to avoid overflows.
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
|
#
255894 |
|
26-Sep-2013 |
delphij |
Improve bsdpatch usability:
- 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)
|
#
253614 |
|
24-Jul-2013 |
pfg |
patch: style fix
Submitted by: gogolok
|
#
250975 |
|
25-May-2013 |
gjb |
Revert r250972 to fix build.
|
#
250972 |
|
24-May-2013 |
se |
The error handling for writes to the target file could lead to the final 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
|
#
246091 |
|
29-Jan-2013 |
delphij |
- Refresh code with latest OpenBSD revisions. - 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
|
#
246074 |
|
29-Jan-2013 |
gabor |
- Add a BSD-licensed patch, ported by Pedro F. Giffuni (pfg) from 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
|