summaryrefslogtreecommitdiff
path: root/usr.bin/split/split.c
AgeCommit message (Collapse)Author
2024-05-03Tighten boundary check in split(1) to prevent a potential buffer overflow.Shawn Bayern
Before increasing sufflen, make sure the current name plus two (including the terminating NUL character and the to-be-added character) does not exceed the fixed buffer length, and stop immediately if this would occur. In worst case scenario the code would write an nul character beyond the boundary, however it would be caught by open(2) and based on the memory layout, we do not believe this would constitute a security vulnerability. MFC after: 3 days
2023-11-26Remove copyright strings ifdef'd outWarner Losh
We've ifdef'd out the copyright strings for some time now. Go ahead and remove the ifdefs. Plus whatever other detritis was left over from other recent removals. These copyright strings are present in the comments and are largely from CSRG's attempt at adding their copyright to every binary file (which modern interpretations of the license doesn't require). Sponsored by: Netflix
2023-11-26usr.bin: Remove ancient SCCS tags.Warner Losh
Remove ancient SCCS tags from the tree, automated scripting, with two minor fixup to keep things compiling. All the common forms in the tree were removed with a perl script. Sponsored by: Netflix
2023-09-28split: Improve GNU compatibility.Dag-Erling Smørgrav
* Like GNU split, turn autoextend back on if given -a0. * Add a test case that verifies that -a<non-zero> turns autoextend off. * Add a test case that verifies that -a0 turns autoextend back on. Sponsored by: Klara, Inc. Reviewed by: christos, kevans Differential Revision: https://reviews.freebsd.org/D42011
2023-09-28split: Further option parsing improvements.Dag-Erling Smørgrav
* Whenever possible, use strtonum() to parse numeric arguments. * Improve usefulness and consistency of error messages. * While here, fix some type and style issues. Sponsored by: Klara, Inc. Reviewed by: christos, kevans Differential Revision: https://reviews.freebsd.org/D42010
2023-09-06split: Fix linecount parsing.Dag-Erling Smørgrav
The “undocumented kludge” which unfortunately can't be dropped for backward compatibility reasons was prone to segfaulting and would improperly allow a new linecount when one was already set. Fix these issues and add regression tests. MFC after: 1 week Sponsored by: Klara, Inc. Reviewed by: kevans Differential Revision: https://reviews.freebsd.org/D41757
2023-09-06split: Code cleanup.Dag-Erling Smørgrav
MFC after: 1 week Sponsored by: Klara, Inc. Reviewed by: kevans Differential Revision: https://reviews.freebsd.org/D41756
2023-08-16Remove $FreeBSD$: one-line .c patternWarner Losh
Remove /^[\s*]*__FBSDID\("\$FreeBSD\$"\);?\s*\n/
2023-07-07Mark usage function as __dead2 in programs where it does not returnAlfonso Gregory
In most cases, usage does not return, so mark them as __dead2. For the cases where they do return, they have not been marked __dead2. Reviewed by: imp Pull Request: https://github.com/freebsd/freebsd-src/pull/735
2023-05-30split(1): add '-c' to continue creating filesJan Schaumann
Currently, split(1) will clobber any existing output files: $ split file; ls xaa xab xac xad $ split second-file; ls xaa xab xac xad xae xaf This patch adds a flag "-c" (mnemonic "create, don't overwrite" or "continue where you left off"): $ split file; ls xaa xab xac xad $ split -c second-file; ls xaa xab xac xad xae xaf xag xah xai xaj Reviewed by: christos Approved by: kevans Different Revision: https://reviews.freebsd.org/D38553
2023-05-30split(1): auto-extend suffix length if requiredJan Schaumann
If the input cannot be split into the number of files resulting from the default suffix length, automatically extend the suffix length rather than bailing out with 'too many files'. Suffixes are extended such that the resulting files continue to sort lexically and "cat *" would reproduce the input. For example, splitting a 1M lines file into (default) 1000 lines per file would yield files named 'xaa', 'xab', ..., 'xyy', 'xyz', 'xzaaa', 'xzaab', ..., 'xzanl'. If '-a' is specified, the suffix length is not auto-extended. This behavior matches GNU sort(1) since around version 8.16. Reviewed by: christos Approved by: kevans Different Revision: https://reviews.freebsd.org/D38279
2023-04-18split: Update synopsis and usage; fix examplesMateusz Piotrowski
- Mark -d as an optional flag - Add a prompt to one of the examples for consistency - Add -d to the usage message Sponsored by: Klara Inc.
2022-10-27split: reset errno prior to getline()Math Ieu
Something else may have set errno, breaking the post-getline() logic that tries to detect the getline() error. This was initially noted in a jail on a system that has HPET, in a jail that does not expose /dev/hpet0 -- we see an earlier error in libc's vdso bits. Fixes: 5c053aa3c5e90 ("split: switch to getline() [...]")
2022-10-25split: switch to getline() for line/pattern matchingKyle Evans
Get rid of split's home-grown logic for growing the buffer; arbitrarily breaking at LONG_MAX bytes instead of 65536 bytes gives us much more wiggle room. Additionally, we'll actually fail out entirely if we can't fit a line, which makes noticing this class of problem much easier. Reviewed by: bapt, emaste, pauamma Sponsored by: Klara, Inc. Differential Revision: https://reviews.freebsd.org/D36323
2019-10-02Revert r352953: Convert pnmatch to single element array in regexec callsAlexander Kabaev
Requested by: cem Notes: svn path=/head/; revision=353011
2019-10-02Convert pnmatch to single element array in regexec callsAlexander Kabaev
The regexec function is declared as taking an array of regmatch_t elements, and passing in the pointer to singleton element, while correct, triggers a Coverity warning. Convert the singleton into an array of one to silence the warning. Reported by: Coverity Coverity CID: 1009732, 1009733 MFC after: 2 weeks Notes: svn path=/head/; revision=352953
2017-11-20General further adoption of SPDX licensing ID tags.Pedro F. Giffuni
Mainly focus on files that use BSD 3-Clause license. The Software Package Data Exchange (SPDX) group provides a specification to make it easier for automated tools to detect and summarize well known opensource licenses. We are gradually adopting the specification, noting that the tags are considered only advisory and do not, in any way, superceed or replace the license texts. Special thanks to Wind River for providing access to "The Duke of Highlander" tool: an older (2014) run over FreeBSD tree was useful as a starting point. Notes: svn path=/head/; revision=326025
2017-02-28Renumber copyright clause 4Warner Losh
Renumber cluase 4 to 3, per what everybody else did when BSD granted them permission to remove clause 3. My insistance on keeping the same numbering for legal reasons is too pedantic, so give up on that point. Submitted by: Jan Schaumann <jschauma@stevens.edu> Pull Request: https://github.com/freebsd/freebsd/pull/96 Notes: svn path=/head/; revision=314436
2013-11-09Change manual string conversion to expand_numberEitan Adler
Reviewed by: adrian Notes: svn path=/head/; revision=257884
2013-05-21Avoid signed overflow in error handling code.Eitan Adler
Reviewed by: cperciva, bjk Notes: svn path=/head/; revision=250882
2013-05-10Implement 'split -d' which allows a numeric suffix instead of anEitan Adler
alphabetic one. PR: bin/116209 Submitted by: Marcin Gryszkalis <mg@fork.pl> (adapted from) Reviewed by: will MFC after: 1 week Notes: svn path=/head/; revision=250432
2012-01-10Fix warning when compiling with gcc46:Eitan Adler
error: variable 'defname' set but not use Approved by: dim MFC after: 3 day Notes: svn path=/head/; revision=229905
2011-11-06Add missing static keywords to split(1)Ed Schouten
Notes: svn path=/head/; revision=227183
2010-12-11Remove the advertising clause from UCB copyrighted files in usr.bin. ThisJoel Dahl
is in accordance with the information provided at ftp://ftp.cs.berkeley.edu/pub/4bsd/README.Impt.License.Change Also add $FreeBSD$ to a few files to keep svn happy. Discussed with: imp, rwatson Notes: svn path=/head/; revision=216370
2008-03-16Add a -n option to split(1) to split files into N chunks rather thanDavid Schultz
having to specify the right number of bytes. Obtained from: NetBSD Submitted by: Jan Schaumann <jschauma@netmeister.org> PR: 113175 Notes: svn path=/head/; revision=177256
2006-08-10Add support for splitting at gigabyte boundaries. [1]Giorgos Keramidas
Also make both lowercase and uppercase suffix letters work as byte-count suffixes, i.e. the following two commands are equivalent now: % split -b 4m foo % split -b 4M foo Submitted by: Roman Divacky [1] Lots of help by: cperciva Reviewed by: cperciva MFC after: 1 week Notes: svn path=/head/; revision=161172
2006-08-08Update usage & SYNOPSIS and clarify that input files are not removed.Giorgos Keramidas
Sort getopt option handling of -p too, while here. The changes are adapted from a patch by Ruslan Ermilov, posted as followup to docs/33852. PR: docs/33852 Submitted by: Gary W. Swearingen <swear@blarg.net> MFC after: 1 week Notes: svn path=/head/; revision=161106
2005-08-30Remove undocumented historic support for treating "-" as an optionTim J. Robbins
instead of a file operand; this is not compatible with POSIX. Notes: svn path=/head/; revision=149616
2005-08-21Remove the hack that varied the first character of the output file nameTim J. Robbins
if none was specified on the command line. This is not permitted by POSIX, and no longer needed now that we have the -a option. PR: 85099 Submitted by: Toby Peterson (Apple Computer) Notes: svn path=/head/; revision=149345
2004-07-11Respect locale settings from the environment.Tim J. Robbins
Notes: svn path=/head/; revision=131978
2002-07-15Support larger files (at least 64-bit offsets) by using off_t instead ofTim J. Robbins
int to store offsets. Notes: svn path=/head/; revision=100024
2002-06-15Remove <sys/types> where we use <sys/param> already.Juli Mallett
protoize. Notes: svn path=/head/; revision=98253
2002-05-27Allow "-" to be specified as an operand as well as an option.Tim J. Robbins
SUSV3 requires something like "split -- -" to work. Document the "-" operand. Notes: svn path=/head/; revision=97334
2002-05-27Avoid overflowing `fname' if the file name prefix given on the commandTim J. Robbins
line is too long. Obtained from: OpenBSD Notes: svn path=/head/; revision=97332
2002-03-22remove __PWarner Losh
Notes: svn path=/head/; revision=92922
2002-02-01Add -a option (SUSv3) to split(1).Mike Barcroft
Submitted by: Tim J. Robbins <tim@robbins.dropbear.id.au> MFC after: 1 month Notes: svn path=/head/; revision=90048
2001-12-12WARNS=2 fixes, use __FBSDID, remove GCC-specific flags.Mark Murray
Notes: svn path=/head/; revision=87765
2000-11-19Add/fix the ability to split a file larger than 2 gigabytes.John W. De Boskey
Added $FreeBSD tag (in the way the already present sccsid is done). I've been told the rcsid stuff may be of dubious value so I'm curious to know if folks (still) use it. Submitted by: Brad Chisholm <blc@bsdwins.com> Notes: svn path=/head/; revision=68887
1999-02-05Print usage via fprintf(stderr, ..) instead of errx() to avoid progname prefix.Archie Cobbs
Submitted by: Philippe Charnier <charnier@xp11.frmug.org> Notes: svn path=/head/; revision=43625
1999-02-01Add new option '-p pattern' for splitting files based on matching lines inArchie Cobbs
the file with a regular expression. Useful for e.g. 'cvs diff' output. Also compile cleanly with -Wall and fix a few style bugs. PR: bin/9405 Notes: svn path=/head/; revision=43513
1997-08-11Cosmetic in err() string.Philippe Charnier
Notes: svn path=/head/; revision=28071
1997-03-29compare return value from getopt against -1 rather than EOF, per the finalWarner Losh
posix standard on the topic. Notes: svn path=/head/; revision=24360
1995-07-07This fixes 'split -l NNN foo'. As it stands split willRodney W. Grimes
complain about an 'illegal line count' becuase it's looking at the wrong end pointer (ep) to detect any extra characters after the NNN. Submitted by: Rich Murphey <rich@freebsd.org> This should probably get pulled into 2.0.6 and 2.1.0 Notes: svn path=/head/; revision=9427
1994-05-27BSD 4.4 Lite Usr.bin SourcesRodney W. Grimes
Notes: svn path=/cvs2svn/branches/CHRISTOS/; revision=1590