From: Lionel Sambuc Date: Fri, 23 Aug 2013 17:10:16 +0000 (+0200) Subject: Importing usr.bin/dirname X-Git-Tag: v3.3.0~820 X-Git-Url: http://zhaoyanbai.com/repos/%22http:/www.isc.org/icons/sign.html?a=commitdiff_plain;h=refs%2Fchanges%2F83%2F783%2F3;p=minix.git Importing usr.bin/dirname Change-Id: I83263576440c2040fb8ccd1e952abd53495fcb70 --- diff --git a/commands/Makefile b/commands/Makefile index b539b7f2c..ac031bd4b 100644 --- a/commands/Makefile +++ b/commands/Makefile @@ -7,7 +7,7 @@ SUBDIR= add_route arp ash at backup basename btrace \ chmod chown ci cleantmp cmp co \ comm compress cp crc cron crontab cut \ dd decomp16 DESCRIBE devmand devsize df dhcpd \ - dhrystone diff dirname diskctl dumpcore \ + dhrystone diff diskctl dumpcore \ eject env expand factor fbdctl \ find fix fold format fortune fsck.mfs \ gcore gcov-pull getty grep hexdump host \ diff --git a/commands/dirname/Makefile b/commands/dirname/Makefile deleted file mode 100644 index 939bfafa4..000000000 --- a/commands/dirname/Makefile +++ /dev/null @@ -1,4 +0,0 @@ -PROG= dirname -MAN= - -.include diff --git a/commands/dirname/dirname.c b/commands/dirname/dirname.c deleted file mode 100644 index 32d77c8c5..000000000 --- a/commands/dirname/dirname.c +++ /dev/null @@ -1,42 +0,0 @@ -/* dirname - extract the directory name from a path Author: Peter Holzer */ - -/* Dirname -- extract directory part from a path name - * - * Peter Holzer (hp@vmars.tuwien.ac.at) - * - * $Log$ - * Revision 1.1 2005/04/21 14:55:21 beng - * Initial revision - * - * Revision 1.1.1.1 2005/04/20 13:33:30 beng - * Initial import of minix 2.0.4 - * - * Revision 1.1 1994/02/12 16:15:02 hjp - * Initial revision - * - */ - -#include -#include - -int main(int argc, char **argv) -{ - char *p; - char *path; - - if (argc != 2) { - fprintf(stderr, "Usage: %s path\n", argv[0]); - return(1); - } - path = argv[1]; - p = path + strlen(path); - while (p > path && p[-1] == '/') p--; /* trailing slashes */ - while (p > path && p[-1] != '/') p--; /* last component */ - while (p > path && p[-1] == '/') p--; /* trailing slashes */ - if (p == path) { - printf(path[0] == '/' ? "/\n" : ".\n"); - } else { - printf("%.*s\n", (int) (p - path), path); - } - return(0); -} diff --git a/releasetools/nbsd_ports b/releasetools/nbsd_ports index 765e228fc..72bb403f4 100644 --- a/releasetools/nbsd_ports +++ b/releasetools/nbsd_ports @@ -151,6 +151,7 @@ 2012/10/17 12:00:00,usr.bin/cksum 2012/10/17 12:00:00,usr.bin/col 2012/10/17 12:00:00,usr.bin/ctags +2012/10/17 12:00:00,usr.bin/dirname 2011/09/01 13:37:33,usr.bin/du 2013/05/31 12:00:00,usr.bin/finger 2013/03/22 12:00:00,usr.bin/from diff --git a/usr.bin/Makefile b/usr.bin/Makefile index 4e99dbd71..fd22dcc3b 100644 --- a/usr.bin/Makefile +++ b/usr.bin/Makefile @@ -8,7 +8,7 @@ SUBDIR= \ bzip2 bzip2recover \ cal chpass cksum \ col ctags \ - du \ + dirname du \ finger \ from ftp \ genassym getopt head \ diff --git a/usr.bin/dirname/Makefile b/usr.bin/dirname/Makefile new file mode 100644 index 000000000..ca61cc8a1 --- /dev/null +++ b/usr.bin/dirname/Makefile @@ -0,0 +1,8 @@ +# $NetBSD: Makefile,v 1.8 2009/04/14 22:15:19 lukem Exp $ +# @(#)Makefile 8.1 (Berkeley) 6/6/93 + +NOMAN= # defined + +PROG= dirname + +.include diff --git a/usr.bin/dirname/dirname.c b/usr.bin/dirname/dirname.c new file mode 100644 index 000000000..bc9d0ae47 --- /dev/null +++ b/usr.bin/dirname/dirname.c @@ -0,0 +1,86 @@ +/* $NetBSD: dirname.c,v 1.12 2011/09/16 15:39:25 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 +#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[] = "@(#)dirname.c 8.4 (Berkeley) 5/4/95"; +#endif +__RCSID("$NetBSD: dirname.c,v 1.12 2011/09/16 15:39:25 joerg Exp $"); +#endif /* not lint */ + +#include +#include +#include +#include +#include +#include + +__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) + usage(); + + if ((p = dirname(*argv)) == NULL) + err(1, "%s", *argv); + (void)printf("%s\n", p); + exit(0); +} + +static void +usage(void) +{ + + (void)fprintf(stderr, "usage: dirname path\n"); + exit(1); +}