]> Zhao Yanbai Git Server - minix.git/commitdiff
Importing usr.bin/basename 84/784/3
authorLionel Sambuc <lionel@minix3.org>
Fri, 23 Aug 2013 17:35:37 +0000 (19:35 +0200)
committerLionel Sambuc <lionel@minix3.org>
Sun, 25 Aug 2013 16:51:36 +0000 (18:51 +0200)
Change-Id: I2c71c83bc6a420390c4aed015373f78ebf425903

commands/Makefile
commands/basename/Makefile [deleted file]
commands/basename/basename.c [deleted file]
distrib/sets/lists/minix/mi
man/man1/Makefile
man/man1/basename.1 [deleted file]
releasetools/nbsd_ports
usr.bin/Makefile
usr.bin/basename/Makefile [new file with mode: 0644]
usr.bin/basename/basename.1 [new file with mode: 0644]
usr.bin/basename/basename.c [new file with mode: 0644]

index ac031bd4ba7a3b1cf11223922830b542dc07357c..79486fe0115b603f6d1495cbc26fa44d7b3a0ca1 100644 (file)
@@ -2,7 +2,7 @@
 
 .include <bsd.own.mk>
 
-SUBDIR=        add_route arp ash at backup basename btrace \
+SUBDIR=        add_route arp ash at backup btrace \
        cawf cd cdprobe cpp \
        chmod chown ci cleantmp cmp co \
        comm compress cp crc cron crontab cut \
diff --git a/commands/basename/Makefile b/commands/basename/Makefile
deleted file mode 100644 (file)
index 7a5acc2..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-PROG=  basename
-MAN=
-
-.include <bsd.prog.mk>
diff --git a/commands/basename/basename.c b/commands/basename/basename.c
deleted file mode 100644 (file)
index bd17083..0000000
+++ /dev/null
@@ -1,76 +0,0 @@
-/* basename - print last part of a path      Authors: B. Garfolo & P. Nelson */
-
-/* Basename - print the last part of a path.
- *
- *    For MINIX  --  Conforms to POSIX - P1003.2/D10
- *      Exception -- it ignores the LC environment variables.
- *
- *    Original MINIX author:  Blaine Garfolo
- *    POSIX rewrite author:   Philip A. Nelson
- *
- *    POSIX version - October 20, 1990
- *      Feb 14, 1991: changed rindex to strrchr. (PAN)
- *
- */
-
-
-#include <string.h>
-#include <stdlib.h>
-#include <stdio.h>
-
-#define EOS '\0'
-
-int main(int argc, char **argv);
-
-int main(argc, argv)
-int argc;
-char *argv[];
-{
-  char *result_string;         /* The pointer into argv[1]. */
-  char *temp;                  /* Used to move around in argv[1]. */
-  int suffix_len;              /* Length of the suffix. */
-  int suffix_start;            /* Where the suffix should start. */
-
-
-  /* Check for the correct number of arguments. */
-  if ((argc < 2) || (argc > 3)) {
-       fprintf(stderr, "Usage: basename string [suffix] \n");
-       exit(1);
-  }
-
-  /* Check for all /'s */
-  for (temp = argv[1]; *temp == '/'; temp++)   /* Move to next char. */
-       ;
-  if (*temp == EOS) {
-       printf("/\n");
-       exit(0);
-  }
-
-  /* Build the basename. */
-  result_string = argv[1];
-
-  /* Find the last /'s */
-  temp = strrchr(result_string, '/');
-
-  if (temp != NULL) {
-       /* Remove trailing /'s. */
-       while ((*(temp + 1) == EOS) && (*temp == '/')) *temp-- = EOS;
-
-       /* Set result_string to last part of path. */
-       if (*temp != '/') temp = strrchr(result_string, '/');
-       if (temp != NULL && *temp == '/') result_string = temp + 1;
-  }
-
-  /* Remove the suffix, if any. */
-  if (argc > 2) {
-       suffix_len = strlen(argv[2]);
-       suffix_start = strlen(result_string) - suffix_len;
-       if (suffix_start > 0)
-               if (strcmp(result_string + suffix_start, argv[2]) == EOS)
-                       *(result_string + suffix_start) = EOS;
-  }
-
-  /* Print the resultant string. */
-  printf("%s\n", result_string);
-  return(0);
-}
index 8795d61d08f16a477b0640534fef66fe277503cd..726e1778de2d18a635af021bd1488c25d4de117b 100644 (file)
 ./usr/man/man1/df.1                    minix-sys
 ./usr/man/man1/dhrystone.1             minix-sys
 ./usr/man/man1/diff.1                  minix-sys
+./usr/man/man1/dirname.1               minix-sys
 ./usr/man/man1/dosdir.1                        minix-sys
 ./usr/man/man1/dosread.1               minix-sys
 ./usr/man/man1/doswrite.1              minix-sys
index fd4cc970e07d39f9935c11bf23c1ad3f9d907900..a38ddaba179cb4606d5cba9af444f54e1f464d7b 100644 (file)
@@ -1,4 +1,4 @@
-MAN=   ash.1 at.1 basename.1 \
+MAN=   ash.1 at.1 \
        bsfilt.1 cawf.1 chgrp.1 \
        chmod.1 cmp.1 comm.1 compress.1 \
        cp.1 crc.1 crontab.1 dd.1 \
diff --git a/man/man1/basename.1 b/man/man1/basename.1
deleted file mode 100644 (file)
index 5f2c895..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-.TH BASENAME 1
-.SH NAME
-basename, dirname \- strip off file prefixes and suffixes
-.SH SYNOPSIS
-\fBbasename \fIfile\fR [\fIsuffix\fR]\fR
-.br
-\fBdirname \fIfile\fR
-.de FL
-.TP
-\\fB\\$1\\fR
-\\$2
-..
-.de EX
-.TP 20
-\\fB\\$1\\fR
-# \\$2
-..
-.SH EXAMPLES
-.TP 20
-.B basename /user/ast/file.c
-# Strips path to yield \fIfile.c\fP
-.TP 20
-.B basename /user/file.c .c
-# Strips path and \fI.c\fP to yield \fIfile\fP
-.TP 20
-.B dirname /user/file.c
-# Strips basename to yield \fI/user\fP
-.SH DESCRIPTION
-.PP
-.I Basename
-removes the initial directory names (if any) yielding the name of the
-file itself.
-If a second argument is present, it is interpreted as a suffix and is
-also stripped, if present.
-.PP
-.I Dirname
-removes the final component of a path, yielding the directory a file is in.
-.PP
-These programs are primarily used in shell scripts.
index 72bb403f4b94b61d2556391e608bed6f965c1f5e..9bde208b3401bb3e1a75f0bb78c99baa1a0f2fed 100644 (file)
 2012/10/17 12:00:00,tools/tsort
 2009/05/08 12:48:43,usr.bin/apropos
 2012/10/17 12:00:00,usr.bin/banner
+2012/10/17 12:00:00,usr.bin/basename
 2013/05/31 12:00:00,usr.bin/bdes
 2012/10/17 12:00:00,usr.bin/bzip2
 2012/10/17 12:00:00,usr.bin/bzip2recover
index fd22dcc3b08d5e36da454d914b6fa8d5fa84a053..27999760d3a68a4882c2eefce5532fc2417555ba 100644 (file)
@@ -4,7 +4,7 @@
 .include <bsd.own.mk>
 
 SUBDIR= \
-       banner bdes \
+       banner basename bdes \
        bzip2 bzip2recover \
        cal chpass cksum \
        col ctags \
diff --git a/usr.bin/basename/Makefile b/usr.bin/basename/Makefile
new file mode 100644 (file)
index 0000000..455b287
--- /dev/null
@@ -0,0 +1,7 @@
+#      $NetBSD: Makefile,v 1.6 2009/04/14 22:15:17 lukem Exp $
+#      @(#)Makefile    8.1 (Berkeley) 6/6/93
+
+PROG=  basename
+MLINKS=        basename.1 dirname.1
+
+.include <bsd.prog.mk>
diff --git a/usr.bin/basename/basename.1 b/usr.bin/basename/basename.1
new file mode 100644 (file)
index 0000000..3cbb8b2
--- /dev/null
@@ -0,0 +1,92 @@
+.\"    $NetBSD: basename.1,v 1.17 2003/09/06 20:56:40 kleink Exp $
+.\"
+.\" Copyright (c) 1990, 1993, 1994
+.\"    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. 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.
+.\"
+.\"     @(#)basename.1 8.2 (Berkeley) 4/18/94
+.\"
+.Dd April 18, 1994
+.Dt BASENAME 1
+.Os
+.Sh NAME
+.Nm basename ,
+.Nm dirname
+.Nd return filename or directory portion of pathname
+.Sh SYNOPSIS
+.Nm
+.Ar string
+.Op Ar suffix
+.Nm dirname
+.Ar string
+.Sh DESCRIPTION
+.Nm
+deletes any prefix ending with the last slash
+.Ql \&/
+character present in
+.Ar string ,
+and a
+.Ar suffix ,
+if given.
+The resulting filename is written to the standard output.
+A non-existent suffix is ignored.
+.Pp
+.Nm dirname
+deletes the filename portion, beginning
+with the last slash
+.Ql \&/
+character to the end of
+.Ar string ,
+and writes the result to the standard output.
+.Sh EXIT STATUS
+Both the
+.Nm
+and
+.Nm dirname
+utilities
+exit 0 on success, and \*[Gt]0 if an error occurs.
+.Sh EXAMPLES
+The following line sets the shell variable
+.Ev FOO
+to
+.Pa /usr/bin .
+.Pp
+.Dl FOO=`dirname /usr/bin/trail`
+.Sh SEE ALSO
+.Xr csh 1 ,
+.Xr sh 1 ,
+.Xr basename 3 ,
+.Xr dirname 3
+.Sh STANDARDS
+The
+.Nm
+and
+.Nm dirname
+utilities conform to
+.St -p1003.2-92 .
diff --git a/usr.bin/basename/basename.c b/usr.bin/basename/basename.c
new file mode 100644 (file)
index 0000000..5bd8f9f
--- /dev/null
@@ -0,0 +1,103 @@
+/*     $NetBSD: basename.c,v 1.15 2011/08/29 14:24:03 joerg Exp $      */
+
+/*-
+ * Copyright (c) 1991, 1993, 1994
+ *     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. 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.
+ */
+
+#include <sys/cdefs.h>
+#ifndef lint
+__COPYRIGHT("@(#) Copyright (c) 1991, 1993, 1994\
+ The Regents of the University of California.  All rights reserved.");
+#endif /* not lint */
+
+#ifndef lint
+#if 0
+static char sccsid[] = "@(#)basename.c 8.4 (Berkeley) 5/4/95";
+#endif
+__RCSID("$NetBSD: basename.c,v 1.15 2011/08/29 14:24:03 joerg Exp $");
+#endif /* not lint */
+
+#include <err.h>
+#include <libgen.h>
+#include <locale.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+__dead static void usage(void);
+
+int
+main(int argc, char **argv)
+{
+       char *p;
+       int ch;
+
+       setlocale(LC_ALL, "");
+
+       while ((ch = getopt(argc, argv, "")) != -1)
+               switch (ch) {
+               case '?':
+               default:
+                       usage();
+               }
+       argc -= optind;
+       argv += optind;
+
+       if (argc != 1 && argc != 2)
+               usage();
+
+       if (**argv == '\0') {
+               (void)printf("\n");
+               exit(0);
+       }
+       if ((p = basename(*argv)) == NULL)
+               err(1, "%s", *argv);
+       if (*++argv != '\0') {
+               int suffixlen, stringlen, off;
+
+               suffixlen = strlen(*argv);
+               stringlen = strlen(p);
+
+               if (suffixlen < stringlen) {
+                       off = stringlen - suffixlen;
+                       if (strcmp(p + off, *argv) == 0)
+                               p[off] = '\0';
+               }
+       }
+       (void)printf("%s\n", p);
+       exit(0);
+}
+
+static void
+usage(void)
+{
+
+       (void)fprintf(stderr, "usage: basename string [suffix]\n");
+       exit(1);
+}