History log of /freebsd-current/usr.bin/patch/inp.c
Revision Date Author Comments
# 25696725 19-Apr-2024 Martin Tournoij <martin@arp242.net>

patch: use getline() instead of fgetln()

This replaces fgetln() with getline(). The main reason for this is
portability, making things easier for people who want to compile these
tools on non-FreeBSD systems.

I appreciate that's probably not the top concern for FreeBSD base tools,
but fgetln() is impossible to port to most platforms, as concurrent
access is essentially impossible to implement fully correct without the
line buffer on the FILE struct. Other than this, many generic FreeBSD
tools compile fairly cleanly on Linux with a few small changes.

Most uses of fgetln() pre-date getline() support (added in 2009 with
69099ba2ec8b), and there's been some previous patches (ee3ca711a898
8c98e6b1a7f3 1a2a4fc8ce1b) for other tools.

Obtained from: https://github.com/dcantrell/bsdutils and
https://github.com/chimera-linux/chimerautils
Signed-off-by: Martin Tournoij <martin@arp242.net>
Reviewed by: imp
Pull Request: https://github.com/freebsd/freebsd-src/pull/893


# 42b38843 16-Aug-2023 Warner Losh <imp@FreeBSD.org>

Remove $FreeBSD$: one-line .h pattern

Remove /^\s*\*+\s*\$FreeBSD\$.*$\n/


# c384a278 22-Jul-2021 Pedro F. Giffuni <pfg@FreeBSD.org>

patch: cleanup variable initialization a bit.

musl libc fgetln is a bit more pickier.

Hinted by: chimera-linux (git 31491e1de2e1241885984cd9e4b978965f14eda4)


# 21ab148d 11-Jan-2018 Kyle Evans <kevans@FreeBSD.org>

patch(1): Don't check for NUL bytes in Plan A

Plan A mmap()'s the entire input file and operates on it in memory. The
map(2) call succeeded, so we shouldn't need to bother checking for the NUL
byte as long as we're within our buffer space.

This was clearly intentional to match "the behavior of the original code",
but it creates a discrepancy between Plan A and Plan B that doesn't seem
sensible and it's not inherently wrong to allow a NUL byte.

This change was motivated by the gemspec in net/rubygem-grpc failing to
patch, despite the patch being generated with diff, because a NUL byte was
used as a delimiter in the header briefly in an otherwise text file.

An alternative was considered: to fallback to plan B if plan A won't process
the entire file due to a NUL byte, but I deemed this to be the better option
since plan A isn't failing due to memory limitations and will fail later on
if it's really dealing with a file it shouldn't be.

PR: 224842 (exp-run)
Reported by: swills
Reviewed by: emaste, pfg
MFC after: 2 weeks
Differential Revision: https://reviews.freebsd.org/D13738


# 63433bc9 05-Mar-2017 Pedro F. Giffuni <pfg@FreeBSD.org>

bc/dc/patch: make some use of reallocarray(3).

reallocarray(3) is a non portable extension from OpenBSD. Given that it is
already in FreeBSD, make easier future merges by adopting in some cases
where the code has some shared heritage with OpenBSD.

Obtained from: OpenBSD


# e678759c 14-Aug-2015 Xin LI <delphij@FreeBSD.org>

Remove automatic checkout feature.

Obtained from: DragonFly via OpenBSD
Relnotes: yes
MFC: never


# 812aa46f 10-Aug-2015 Xin LI <delphij@FreeBSD.org>

Use __DECONST instead of doing strdup/free.

Suggested by: ed
MFC after: 2 weeks


# 2cf624f6 10-Aug-2015 Xin LI <delphij@FreeBSD.org>

use posix_spawn(3) instead of fork() and exec() manually as suggested
by jmg@.

Reviewed By: pfg
MFC after: 2 weeks
Differential Revision: https://reviews.freebsd.org/D3353


# 1e3e5815 28-Jul-2015 Xin LI <delphij@FreeBSD.org>

Fix shell injection vulnerability in patch(1) and drop SCCS
support by replacing system() with execve().

Future revisions may remove the functionality completely.

Obtained from: Bitrig
Security: CVE-2015-1416


# df6e4074 20-Apr-2015 Pedro F. Giffuni <pfg@FreeBSD.org>

patch(1): small include changes.

Mostly to match OpenBSD, no functional change.

Obtained from: OpenBSD


# a45060f0 07-Apr-2015 Pedro F. Giffuni <pfg@FreeBSD.org>

patch: Bring small updates from OpenBSD

Prevent null pointer dereference on empty input files when diff requires
a specific version.

Fix division by zero for files with long lines (> 1024) in Plan B mode
by supporting arbitrarily long lines.

Obtained from: OpenBSD (CVS Rev 1.41, 1.42)
MFC after: 1 week


# e56ef7d3 29-Jan-2013 Xin LI <delphij@FreeBSD.org>

- 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


# 2dd076b8 29-Jan-2013 Gabor Kovesdan <gabor@FreeBSD.org>

- 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


# a9c7144e 01-Aug-2004 Garance A Drosehn <gad@FreeBSD.org>

Import of a BSD-licensed version of `patch', which will eventually
replace the version we currently have in src/gnu/usr.bin/patch/.
Among other things, this version includes a --posix option for strict
POSIX conformance.

This version is the current source from OpenBSD as of today. It is
their 3.5-release, plus a few updates to patch.c and pch.c that they
made about three weeks ago.


# 65b3003d 13-Jul-1997 Peter Wemm <peter@FreeBSD.org>

kill the undead


# c44252b6 06-Jul-1997 Bruce Evans <bde@FreeBSD.org>

Finish importing Lite2's src/usr.bin, except for ex, diff, grep, mail,
pascal and vmstat.sparc. All changed files on the vendor branch should
already have been imported.


# 6065a0be 30-Dec-1995 Peter Wemm <peter@FreeBSD.org>

This commit was generated by cvs2svn to compensate for changes in r13122,
which included commits to RCS files with non-trunk default branches.


# 9b50d902 26-May-1994 Rodney W. Grimes <rgrimes@FreeBSD.org>

BSD 4.4 Lite Usr.bin Sources