diff options
author | rgrimes <rgrimes@FreeBSD.org> | 1994-05-27 12:33:43 +0000 |
---|---|---|
committer | rgrimes <rgrimes@FreeBSD.org> | 1994-05-27 12:33:43 +0000 |
commit | e5bc52df062079b53ec568f2f4ae8f797c38933e (patch) | |
tree | c3b2fe9816aeb61a3ee2355aaa6129345087fb17 | |
parent | 3f0cb5fe2e70eaff5dd44251489e3f9837693b75 (diff) | |
download | FreeBSD-src-e5bc52df062079b53ec568f2f4ae8f797c38933e.zip FreeBSD-src-e5bc52df062079b53ec568f2f4ae8f797c38933e.tar.gz |
BSD 4.4 Lite Usr.bin Sources
-rw-r--r-- | usr.bin/sort/sort.1 | 310 | ||||
-rw-r--r-- | usr.bin/whereis/whereis.1 | 63 | ||||
-rw-r--r-- | usr.bin/whereis/whereis.c | 115 |
3 files changed, 488 insertions, 0 deletions
diff --git a/usr.bin/sort/sort.1 b/usr.bin/sort/sort.1 new file mode 100644 index 0000000..0ff0633 --- /dev/null +++ b/usr.bin/sort/sort.1 @@ -0,0 +1,310 @@ +.\" Copyright (c) 1991, 1993 +.\" The Regents of the University of California. All rights reserved. +.\" +.\" This code is derived from software contributed to Berkeley by +.\" the Institute of Electrical and Electronics Engineers, Inc. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" 3. All advertising materials mentioning features or use of this software +.\" must display the following acknowledgement: +.\" This product includes software developed by the University of +.\" California, Berkeley and its contributors. +.\" 4. Neither the name of the University nor the names of its contributors +.\" may be used to endorse or promote products derived from this software +.\" without specific prior written permission. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" +.\" @(#)sort.1 8.1 (Berkeley) 6/10/93 +.\" +.Dd June 10, 1993 +.Dt SORT 1 +.Os +.Sh NAME +.Nm sort +.Nd sort or merge text files +.Sh SYNOPSIS +.Nm sort +.Op Fl mubdfinrtx +.Oo +.Cm \(pl Ns Ar pos1 +.Op Fl Ns Ar pos2 +.Oc +.Ar ... +.Op Fl o Ar output +.Op Fl T Ar directory +.Op Ar file +.Ar ... +.Sh DESCRIPTION +The +.Nm sort +utility +sorts text files by lines. +Comparisons are based on one or more sort keys (or fields) extracted +from each line of input, and are performed +lexicographically. By default, if keys are not given, +.Nm sort +regards each input line as a single field. +.Pp +The following options are available: +.Bl -tag -width indent +.It Fl c +Check that the single input file is sorted lexicographically. +If the file is not sorted, +.Nm sort +sorts it and writes the sorted output to the standard output or the +filename specified by the +.Fl o +option. +.It Fl m +Merge only; the input files are assumed to be pre-sorted. +.It Fl o Ar output +The argument given is the name of an +.Ar output +file to +be used instead of the standard output. +This file +can be the same as one of the input files. +.It Fl T Ar directory +The argument +.Ar directory +is used for creating temporary files. +.It Fl u +Unique: suppress all but one in each set of lines +having equal keys. +If used with the +.Fl c +option, +check that there are no lines with duplicate keys. +.El +.Pp +The following options override the default ordering rules. +When ordering options appear independent of key field +specifications, the requested field ordering rules are +applied globally to all sort keys. +.\" When attached to a +.\" specific key +.\" (see +.\" .Fl k ) , +.\" the specified ordering options override +.\" all global ordering options for that key. +.Bl -tag -width indent +.It Fl d +Only blank space and alphanumeric characters +.\" according +.\" to the current setting of LC_CTYPE +are used +in making comparisons. +.It Fl f +Considers all lowercase characters that have uppercase +equivalents to be the same for purposes of +comparison. +.It Fl i +Ignore all non-printable characters. +.It Fl n +An initial numeric string, consisting of optional +blank space, optional minus sign, and zero or more +digits (including decimal point) +.\" with +.\" optional radix character and thousands +.\" separator +.\" (as defined in the current locale), +is sorted by arithmetic value. +The +.Fl n +option implies +the +.Fl b +option. (See below.) +Note that the +.Fl b +option +is only effective when key fields have been specified +and that +.Fl \&0 +is considered equal to zero. +.optional It Fl r +Reverse the sense of comparisons. +.El +.Pp +The treatment of field separators can be altered using the +options: +.Bl -tag -width indent +.It Fl b +Leading blank spaces are ignored when determining the starting +ending positions of a restricted sort key. +If the +.Fl b +option is specified before the first +.Cm \(pl Ns Ar pos1 +argument, it shall be applied to all +.Cm \(pl Ns Ar pos1 +arguments. +Otherwise, the +.Fl b +option can be +attached independently to each +.Cm \(pl Ns Ar pos1 +or +.Fl Ar pos2 +argument (see below). +.It Fl t Ar char +.Ar Char +is used as the field separator character; +.Ar char +is not considered to be part of a field (although it +can be included in a sort key). +Each occurrence of +.Ar char +is significant (for example, +.Dq Ar charchar +delimits an empty field). +If +.Fl t +is not specified, +blank space characters are used as default field +separators. +.It Cm \(pl Ns Ar pos1 +Designates the start position of a key field. +.It Fl Ns Ar pos1 +Designates the end position of a key field. +.El +.Pp +The following operands are available: +.Bl -tag -width indent +.Ar file +The pathname of a file to be sorted, merged, or checked. +If no file +operands are specified, or if +a file operand is +.Fl , +the standard input is used. +.Pp +A field is +defined as a minimal sequence of characters followed by a +field separator or a newline character. +By default, the first +blank space of a sequence of blank spaces acts as the field separator. +All blank spaces in a sequence of blank spaces are considered +to be part of the next field; for example, all blank spaces at +the beginning of a line are considered to be part of the +first field. +.Pp +Fields are specified +by the +.Cm \(pl Ns Ar pos1 +and +.Fl Ar pos2 +arguments. A missing +.Cm \(pl Ns Ar pos1 +argument defaults to the beginning of a line. +A missing +.Fl Ar pos2 +argument defaults to the end of a line. +.Pp +The arguments +.Cm \(pl Ns Ar pos1 +and +.Fl Ar pos2 +have the form +.Em m.n +followed by one or more of the options +.Fl b , d , f , i , +.Fl n , r . +A +.Cm \(pl Ns Ar pos1 +position specified by +.Em m.n +is interpreted to +mean the +.Em n Ns th +character in the +.Em m Ns \(pl1th +field. +A missing +.Em \&.n +means +.Ql \&.0 , +indicating the first character of the +.Em m Ns \(pl1th +field. +If the +.Fl b +option is in effect, +.Em n +is counted from the first +non-blank character in the +.Em m Ns \(pl1th +field; +.Em m Ns \&.0b +refers to the first +non-blank character in the +.Em m Ns \(pl1th +field. +.Pp +A +.Fl Ar pos2 +position specified by +.Em m.n +is interpreted to mean +the +.Em n Ns th +character (including separators) after the last +character of the +.Em m Ns th +field. +A missing +.Em \&.n +means +.Ql \&.0 , +indicating +the last character of the +.Em m Ns th +field. +If the +.Fl b +option +is in effect, +.Em n +is counted from the last leading blank character in +the +.Em m Ns \(pl1th +field; +.Em m Ns \&.1b +refers to the first non-blank character in the +.Em m Ns \(pl1th +field. +.Sh FILES +.Bl -tag -width Pa -compact +.It Pa /var/tmp/stm*, /tmp/* +Default temporary directories (in order of search). +.El +.Sh SEE ALSO +.Xr comm 1 , +.Xr uniq 1 , +.Xr join 1 +.Sh DIAGNOSTICS +.Sh BUGS +Lines which are longer than 4096 are discarded and processing continues. +.Sh HISTORY +A +.Nm +command appeared in +.At v6 . diff --git a/usr.bin/whereis/whereis.1 b/usr.bin/whereis/whereis.1 new file mode 100644 index 0000000..fa1f5a4 --- /dev/null +++ b/usr.bin/whereis/whereis.1 @@ -0,0 +1,63 @@ +.\" Copyright (c) 1993 +.\" The Regents of the University of California. All rights reserved. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" 3. All advertising materials mentioning features or use of this software +.\" must display the following acknowledgement: +.\" This product includes software developed by the University of +.\" California, Berkeley and its contributors. +.\" 4. Neither the name of the University nor the names of its contributors +.\" may be used to endorse or promote products derived from this software +.\" without specific prior written permission. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" +.\" @(#)whereis.1 8.2 (Berkeley) 12/30/93 +.\" +.Dd December 30, 1993 +.Dt WHEREIS 1 +.Os BSD 3 +.Sh NAME +.Nm whereis +.Nd locate programs +.Sh SYNOPSIS +.Nm whereis +.Op Ar program ... +.Sh DESCRIPTION +The +.Nm whereis +utility checks the standard binary directories for the specified programs, +printing out the paths of any it finds. +.Pp +The path searched is the string returned by the +.Xr sysctl 8 +utility for the +.Dq user.cs_path +string. +.Sh SEE ALSO +.Xr sysctl 8 , +.Sh COMPATIBILITY +The historic flags and arguments for the +.Nm whereis +utility are no longer available in this version. +.Sh HISTORY +The +.Nm whereis +command appeared in 3.0BSD. diff --git a/usr.bin/whereis/whereis.c b/usr.bin/whereis/whereis.c new file mode 100644 index 0000000..8c75f5e --- /dev/null +++ b/usr.bin/whereis/whereis.c @@ -0,0 +1,115 @@ +/*- + * Copyright (c) 1993 + * The Regents of the University of California. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * This product includes software developed by the University of + * California, Berkeley and its contributors. + * 4. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#ifndef lint +static char copyright[] = +"@(#) Copyright (c) 1993\n\ + The Regents of the University of California. All rights reserved.\n"; +#endif /* not lint */ + +#ifndef lint +static char sccsid[] = "@(#)whereis.c 8.1 (Berkeley) 6/6/93"; +#endif /* not lint */ + +#include <sys/param.h> +#include <sys/stat.h> +#include <sys/sysctl.h> + +#include <err.h> +#include <errno.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> + +void usage __P((void)); + +int +main(argc, argv) + int argc; + char *argv[]; +{ + struct stat sb; + size_t len; + int ch, sverrno, mib[2]; + char *p, *t, *std, path[MAXPATHLEN]; + + while ((ch = getopt(argc, argv, "")) != EOF) + switch (ch) { + case '?': + default: + usage(); + } + argc -= optind; + argv += optind; + + /* Retrieve the standard path. */ + mib[0] = CTL_USER; + mib[1] = USER_CS_PATH; + if (sysctl(mib, 2, NULL, &len, NULL, 0) == -1) + return (-1); + if (len == 0) + err(1, "user_cs_path: sysctl: zero length\n"); + if ((std = malloc(len)) == NULL) + err(1, NULL); + if (sysctl(mib, 2, std, &len, NULL, 0) == -1) { + sverrno = errno; + free(std); + errno = sverrno; + err(1, "sysctl: user_cs_path"); + } + + /* For each path, for each program... */ + for (; *argv; ++argv) + for (p = std;; *p++ = ':') { + t = p; + if ((p = strchr(p, ':')) != NULL) { + *p = '\0'; + if (t == p) + t = "."; + } else + if (strlen(t) == 0) + t = "."; + (void)snprintf(path, sizeof(path), "%s/%s", t, *argv); + if (!stat(path, &sb)) + (void)printf("%s\n", path); + if (p == NULL) + break; + } +} + +void +usage() +{ + (void)fprintf(stderr, "whereis: program ...\n"); + exit (1); +} |