summaryrefslogtreecommitdiffstats
path: root/usr.bin/uniq
Commit message (Collapse)AuthorAgeFilesLines
* Merge an applicable subset of r263234 from HEAD to stable/10:rwatson2015-03-191-1/+1
| | | | | | | | | | | | | Update most userspace consumers of capability.h to use capsicum.h instead. auditdistd is not updated as I will make the change upstream and then do a vendor import sometime in the next week or two. Note that a significant fraction does not apply, as FreeBSD 10 doesn't contain a Capsicumised ping, casperd, libcasper, etc. When these features are merged, the capsicum.h change will need to be merged with them. Sponsored by: Google, Inc.
* Change the cap_rights_t type from uint64_t to a structure that we can extendpjd2013-09-051-7/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | in the future in a backward compatible (API and ABI) way. The cap_rights_t represents capability rights. We used to use one bit to represent one right, but we are running out of spare bits. Currently the new structure provides place for 114 rights (so 50 more than the previous cap_rights_t), but it is possible to grow the structure to hold at least 285 rights, although we can make it even larger if 285 rights won't be enough. The structure definition looks like this: struct cap_rights { uint64_t cr_rights[CAP_RIGHTS_VERSION + 2]; }; The initial CAP_RIGHTS_VERSION is 0. The top two bits in the first element of the cr_rights[] array contain total number of elements in the array - 2. This means if those two bits are equal to 0, we have 2 array elements. The top two bits in all remaining array elements should be 0. The next five bits in all array elements contain array index. Only one bit is used and bit position in this five-bits range defines array index. This means there can be at most five array elements in the future. To define new right the CAPRIGHT() macro must be used. The macro takes two arguments - an array index and a bit to set, eg. #define CAP_PDKILL CAPRIGHT(1, 0x0000000000000800ULL) We still support aliases that combine few rights, but the rights have to belong to the same array element, eg: #define CAP_LOOKUP CAPRIGHT(0, 0x0000000000000400ULL) #define CAP_FCHMOD CAPRIGHT(0, 0x0000000000002000ULL) #define CAP_FCHMODAT (CAP_FCHMOD | CAP_LOOKUP) There is new API to manage the new cap_rights_t structure: cap_rights_t *cap_rights_init(cap_rights_t *rights, ...); void cap_rights_set(cap_rights_t *rights, ...); void cap_rights_clear(cap_rights_t *rights, ...); bool cap_rights_is_set(const cap_rights_t *rights, ...); bool cap_rights_is_valid(const cap_rights_t *rights); void cap_rights_merge(cap_rights_t *dst, const cap_rights_t *src); void cap_rights_remove(cap_rights_t *dst, const cap_rights_t *src); bool cap_rights_contains(const cap_rights_t *big, const cap_rights_t *little); Capability rights to the cap_rights_init(), cap_rights_set(), cap_rights_clear() and cap_rights_is_set() functions are provided by separating them with commas, eg: cap_rights_t rights; cap_rights_init(&rights, CAP_READ, CAP_WRITE, CAP_FSTAT); There is no need to terminate the list of rights, as those functions are actually macros that take care of the termination, eg: #define cap_rights_set(rights, ...) \ __cap_rights_set((rights), __VA_ARGS__, 0ULL) void __cap_rights_set(cap_rights_t *rights, ...); Thanks to using one bit as an array index we can assert in those functions that there are no two rights belonging to different array elements provided together. For example this is illegal and will be detected, because CAP_LOOKUP belongs to element 0 and CAP_PDKILL to element 1: cap_rights_init(&rights, CAP_LOOKUP | CAP_PDKILL); Providing several rights that belongs to the same array's element this way is correct, but is not advised. It should only be used for aliases definition. This commit also breaks compatibility with some existing Capsicum system calls, but I see no other way to do that. This should be fine as Capsicum is still experimental and this change is not going to 9.x. Sponsored by: The FreeBSD Foundation
* Close uniq(1) in the capability mode sandbox and limit descriptors usingpjd2013-07-181-0/+43
| | | | capability rights.
* Add missing static keywords to uniq(1)ed2011-11-061-15/+15
|
* Remove the advertising clause from UCB copyrighted files in usr.bin. Thisjoel2010-12-112-8/+0
| | | | | | | | | 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
* Add SIZE_MAX overflow checkache2010-03-091-0/+2
|
* 1) Reimplement (differently) unlimited line length restricted in prev.ache2010-03-081-54/+65
| | | | | | commit. 2) Honor missing the very last \n (if absent) on output.
* Remove vestiges of old %-format which prevents build on amd64ache2010-03-061-2/+2
|
* 1) Rewrite input processing to not exit with error on the first EILSEQ foundache2010-03-061-106/+68
| | | | | | | | | | | | | | in the input data but fallback to "binary equal" check instead. POSIX says: "The input file shall be a text file", nothing more, so the text file with illegal sequence is valid input. BTW, GNU sort does not fails on EILSEQ too. 2) Speedup input processing a bit in complex cases like skipping fields, chars or ignore case. 3) Enforce the implied LINE_MAX limit (from POSIX definition of "text file" and POSIX uniq(1) description).
* Sync getline() with comm(1):jh2009-12-171-9/+14
| | | | | | | | | | - Prevent overflowing of the buffer length variable in getline() by limiting its maximum value. - Exit if reallocf(3) fails in getline(). Failure was silently considered as end-of-file. Reviewed by: ghelmer Approved by: trasz (mentor)
* The input line length limit mentioned on the manual page was removed byjh2009-12-171-5/+1
| | | | | | r176119. Approved by: trasz (mentor)
* Fix truncation of lines at LINE_MAX characters by dynamicallyghelmer2008-02-081-15/+61
| | | | | | extending line buffers. PR: bin/76578
* Fix typo.jmallett2007-05-171-1/+1
|
* o) Correct for missing whitespace.jmallett2007-05-171-4/+4
| | | | | o) We don't need to check if ifp == stdin to give the filename, since we already know that ifn will be "stdin" if it is.
* Fix confusing misindentation of a closing-brace. (It goes with the switch, notjmallett2007-05-171-1/+1
| | | | with the while.)
* Document that uniq(1) limits input line length to LINE_MAX characters.keramida2007-01-151-0/+4
| | | | | | PR: docs/107578 Submitted by: Jan Schaumann, jschauma.at.netmeister.org MFC after: 3 days
* Added the EXIT STATUS section where appropriate.ru2005-01-171-1/+1
|
* Remove a bogus check that caused empty lines not to be counted when thetjr2004-09-141-1/+1
| | | | | | -c option was given. Noticed by: sf
* Add support for multibyte characters.tjr2004-07-022-35/+41
|
* Mechanically kill hard sentence breaks.ru2004-07-021-3/+3
|
* Document the fact that uniq(1) does not recognize multibyte characters.tjr2004-06-241-1/+5
|
* Mention the environment variables that affect the execution of uniq.tjr2003-04-121-4/+15
| | | | | | | | | | Of particular interest is the fact that LC_COLLATE affects how uniq determines whether lines are equal. This was the subject of a fairly heated debate a year or so ago, and it turns out that the current behaviour is correct and that the standard contained an error. Now that the standard has been corrected by Cor. 1-2002, refer to 1003.1-2001 instead of the 1992 edition in the Standards section.
* mdoc(7) police: markup polishing.ru2002-11-261-1/+1
| | | | Approved by: re
* ANSIify function definitions.dwmalone2002-09-041-17/+9
| | | | | | | | | Add some constness to avoid some warnings. Remove use register keyword. Deal with missing/unneeded extern/prototypes. Some minor type changes/casts to avoid warnings. Reviewed by: md5
* Correct the History section; uniq(1) appeared at least as early as V3.tjr2002-07-051-4/+5
| | | | Move the section to after Standards.
* Remove redundant description of input_file and output_file arguments.tjr2002-07-051-4/+0
|
* Use err instead of errx when malloc fails. "malloc" is not a helpfultjr2002-07-051-4/+10
| | | | error message.
* Skip fields in the manner required by POSIX, and the way V7 did it.tjr2002-06-211-10/+8
| | | | MFC after: 1 week
* Newline characters should not participate in line comparisons. Only apparenttjr2002-06-211-4/+22
| | | | | | | when -s is used or the last line of the file is missing a newline. Noticed by the textutils test suite. MFC after: 1 week
* Note that this appeared at least as early as PWB UNIX.jmallett2002-06-101-0/+4
| | | | Use the literal string 'PWB UNIX', as we still have no .At macro for it.
* Back out rev 1.19 becauseache2002-06-061-2/+18
| | | | | | | | | | 1) It breaks uniq for real life languages when "substitute" directive used in the collating table. 2) It breaks uniq usage in tool chain with other localized utilities which use collate. 3) To follow LC_COLLATE it is directly allowed for uniq by POSIX P1003.1 Draft7 (7.3.2). It means that rev 1.19 gains no additional POSIX conformance.
* Compare lines with strcmp(), not strcoll(). We are interested only intjr2002-06-061-18/+2
| | | | equality, not ordering.
* Sync usage() with manual page synopsis.tjr2002-06-061-1/+1
|
* Accept an input file name of "-" to mean standard input, as required bytjr2002-05-302-16/+20
| | | | P1003.2.
* Fields should be separated by <blank>s, not <space>s according to P1003.2.tjr2002-05-291-1/+1
|
* Don't bother trying to handle "-" arguments ourselves, getopt(3) alreadytjr2002-05-291-5/+2
| | | | does this for us.
* Add the word ``fields'' to the description, and change an instance fromtrhodes2002-05-241-2/+2
| | | | | | fields to num in the SYNOPSIS Noticed by: keramida
* Reword a small part of the uniq(1) manual page to help reduce wordtrhodes2002-05-211-3/+3
| | | | | | | | duplication (ie: fields fields). PR: 38161 Reviewed by: keramida MFC after: 3 days
* Use LC_ALL to pick collateache2002-04-191-1/+1
| | | | Noticed by: tjr
* remove __Pimp2002-03-221-6/+6
|
* WARNS=2 is going to become the default, so remove it from here.markm2001-12-111-1/+0
|
* Style improvements recommended by Bruce as a follow up to somedwmalone2001-12-101-1/+1
| | | | | | | | of the recent WARNS commits. The idea is: 1) FreeBSD id tags should follow vendor tags. 2) Vendor tags should not be compiled (though copyrights probably should). 3) There should be no blank line between including cdefs and __FBSDIF.
* Warns cleanups. Add FreeBSD ID to Makefile.dwmalone2001-12-032-2/+4
|
* mdoc(7) police: utilize the new .Ex macro.ru2001-08-151-3/+1
|
* Add DIAGNOSTICS section namecharnier2000-03-261-1/+1
|
* fix fatal typoache1999-12-101-1/+1
|
* toupper -> tolower to match changed behaviour of new grep case foldache1999-10-291-2/+2
|
* Cosmetique: use standard prototypes schemeache1999-10-241-13/+16
| | | | Back out prev. change: toupper is more compatible with sort -f
* toupper->tolower to match what strcasecmp doesache1999-10-241-2/+2
|
* Use strcoll to provide the same results as sort and commache1999-10-241-3/+17
| | | | Use LINE_MAX for max line size (as comm does)
OpenPOWER on IntegriCloud